1. F对象 作用:用于类属性之间的比较。 使用之前需要先导入: from django.db.models import F 例:查询图书阅读量大于评论量图书信息。 BookInfo.objects.filter(bread__gt=F('bcomment')) 例:查询图书阅读量大于2倍评论量图书信息。 BookInfo.objects.filter(bread__gt=F('bcomment')*2)
  2. Q对象 作用:用于查询时条件之间的逻辑关系。not and or,可以对Q对象进行&|~操作。 使用之前需要先导入: from django.db.models import Q 例:查询id大于3且阅读量大于30的图书的信息。 BookInfo.objects.filter(id__gt=3, bread__gt=30) BookInfo.objects.filter(Q(id__gt=3)&Q(bread__gt=30)) 例:查询id大于3或者阅读量大于30的图书的信息。 BookInfo.objects.filter(Q(id__gt=3)|Q(bread__gt=30)) 例:查询id不等于3图书的信息。 BookInfo.objects.filter(~Q(id=3))
  3. 聚合函数 作用:对查询结果进行聚合操作。 sum count avg max min aggregate:调用这个函数来使用聚合。 返回值是一个字典 使用前需先导入聚合类: from django.db.models import Sum,Count,Max,Min,Avg 例:查询所有图书的数目。 BookInfo.objects.all().aggregate(Count('id')) {'id__count': 5} 例:查询所有图书阅读量的总和。 BookInfo.objects.aggregate(Sum('bread')) {'bread__sum': 126} count函数 返回值是一个数字 作用:统计满足条件数据的数目。 例:统计所有图书的数目。 BookInfo.objects.all().count() BookInfo.objects.count() 例:统计id大于3的所有图书的数目。 BookInfo.objects.filter(id__gt=3).count() 小结: 参考文档: http://python.usyiyi.cn/translate/django_182/ref/models/querysets.html
  4. 查询集 all, filter, exclude, order_by调用这些函数会产生一个查询集,QuerySet类对象可以继续调用上面的所有函数。 9.1 查询集特性 1) 惰性查询:只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询。 2) 缓存:当使用的是同一个查询集时,第一次的时候会发生实际数据库的查询,然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果。