Django中的查询

Django中的查询

__exact 精确等于 like ‘hc’
__iexact 精确等于 忽略大小写 ilike ‘hc’
__contains 包含 like ‘%hc%’
__icontains 包含 忽略大小写 ilike ‘%hc%’,
但是对于sqlite来说,contains的作用效果等同于icontains。

__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False

example

obj1 = GradingModels.objects.filter(user_name__contains='王')#以‘王’开头的user__name
obj2 = GradingModels.objects.filter(user_name__endswith='王')#以‘王’结尾的user__name
obj3 = GradingModels.objects.filter(id__gte=5)#ID大于等于5的
obj5 = GradingModels.objects.filter(id__exact=5)#id等于5的
obj6 = GradingModels.objects.filter(id__in=[1,3,5])#id等于1,3,5,的

exclude()方法,排除选项

obj8 = GradingModels.objects.filter(userName='hc',id__gt=2).exclude(score=88)
#找到符合filter的内容后排除score等于88的,它的另一种写法为
from django.db.models import Q
obj = UserInfo.objects.filter(Q(userName='hc') & Q(id__gt=2) & ~Q(score=88))

计算和和最大值

from django.db.models import Sum,Max,Min
obj = GradingModels.objects.aggregate(Sum('score'))
obj = GradingModels.objects.aggregate(Max('score'))
obj = GradingModels.objects.aggregate(Min('score'))

统计个数

count=GradingModels.objects.count()

范围查找

obj = GradingModels.objects.all()[10:30]#左闭右开,只查找了10和29

get方法与filter的最大区别为,get只能返回一个数据,filter可以返回多个,在get查找到两个以上数据时就会报错

你可能感兴趣的:(Django)