Django字段查询以及查询集

Django字段查询以及查询集_第1张图片

list=BookInfo.objects.filter(id=1)
list = BookInfo.objects.filter(btitle__contains=‘传’)
list = BookInfo.objects.filter(btitle__endswith=‘部’)
list = BookInfo.objects.filter(btitle__isnull=False)
list = BookInfo.objects.filter(id__in=[1, 3, 5])

gt、gte、lt、lte:大于、大于等于、小于、小于等于:
list = BookInfo.objects.filter(id__gt=3)
不满足条件查询使用exclude()
list = BookInfo.objects.exclude(id=3)
year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算:
list = BookInfo.objects.filter(bpub_date__year=1980)
list = BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1))
下面的查询使用前需要先导入
from django.db.models import F,Q,Sum,Count,Avg,Max,Min

查询阅读量大于2倍评论量的图书:
list = BookInfo.objects.filter(bread__gte=F(‘bcomment’))

查询阅读量大于20,并且编号小于3的图书:
list=BookInfo.objects.filter(bread__gt=20).filter(id__lt=3)
list = BookInfo.objects.filter(Q(bread__gt=20) | Q(pk__lt=3))

查询编号不等于3的图书:
list = BookInfo.objects.filter(~Q(pk=3))

查询图书的总阅读量:
list = BookInfo.objects.aggregate(Sum(‘bread’))

查询图书总数:
list = BookInfo.objects.count()

查询集QuerySet特点:
1.)惰性执行:创建查询集时不会执行,直到调用数据时才会访问数据库
2.)缓存:使用同一个查询集,第一次使用时会发生数据库的查询后把结果缓存下来,再次使用这个查询集时会使用缓存的数据
3.)查询集可以进行切片操作:
没有负值。
如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。

list=BookInfo.objects.all()[0:2]

Django字段查询以及查询集_第2张图片
1.通过模型类实现关联查询时,要查哪个表中的数据,就要通过哪个类来查。
2.写关联查询条件时,如果类中没有关系属性,条件需要写对应类的名字,(一类)
如果类中有关系属性,直接写关系属性。(多类)

你可能感兴趣的:(学习记录)