Django数据库增删改查

 

django匹配符的使用及说明

 

匹配符号

使用

说明

__exact

filter(job_exact='开发')

精确等于,如SQL的like '开发'

__iexact

filter(job_iexact='开发')

精确等于并忽略大小写

__contains

filter(job__contains='开发')

某匹配,如SQL的like '%荣耀%'

__icontains

filter(job__icontains='开发')

模糊匹配,忽略大小写

__gt

filter(id__gt=5)

大于

__gte

filter(id__gte=5)

大于等于

__lt

filter(id__lt=5)

小于

__lte

filter(id__lte=5)

小于等于

__in

filter(id__in=[1,2,3])

判断是否在列表内

__startswith

filter(job__startswith='开发')

以……开头

__istartswith

filter(job__istartswith='开发')

以……开头并忽略大小写

__endswith

filter(job__endswith='开发')

以……结尾

__iendswith

filter(job__iendswith='开发')

以……结尾并忽略大小写

__range

filter(job__range='开发')

在……范围内

__year

filter(job__year=2018)

日期字段的年份

__month

filter(job__month=12)

日期字段的月份

__day

filter(job__day=30)

日期字段的天数

__isnull

filter(job__isnull=True/False)

判断是否为空

 

 

取别名


 

.annotate(user_name=F('create_by__name'))
 
group by,这里顺序不能搞错
Model.objects.values('name').annotate(Count('name')).filter(is_del=0).all()
 
update_or_create
第一次是新增数据
d = dict(firsts='儿童早教',  seconds='儿童玩具')
t = Types.objects.update_or_create(**d)
 
#第二次是修改数据
t = Types.objects.update_or_create(**d,defaults={'firsts':'教育资料'})
update_or_create 是根据自带你d的内容查找数据表的数据,如果能找到相匹配的数据,就执行数据修改,修改内容以自带你格式传递给参数defaults即可;如果在数据表找不到撇皮的数据,就姜自带你d的数据新增到数据表里。
 
bulk_create
t1 = Types(firsts='儿童用品',  seconds='儿童玩具')
t2 = Types(firsts='儿童用品', seconds='纸尿裤')
obj_list = [t1,t2]
Types.objects.bulk_create(obj_list)
在使用bulk_create之前,数据类型未模型Types的实例化对象,并且在实例化过程中设置每个字段的值,最后所有的实例化对象放置在列表或元组里,以参数的形式传递给bulk_create,从而实现数据的批量新增操作。
 
Filter
不在这个范围内not_in=django_filters.NumericRangeFilter(field_name="pid",lookup_expr='range',exclude=True)
posted @ 2021-12-14 13:49  fpc  阅读(110)  评论(0编辑  收藏  举报