F对象 作用:用于类属性之间的比较条件。 使用之前需要先导入: from django.db.models import F 例:查询图书阅读量大于评论量图书信息。 BookInfo.objects.filter(bread__gt = F('bcomment')) 例:查询图书阅读量大于2倍评论量图书信息。 BookInfo.objects.filter(bread__gt = F('bcomment')*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)) order_by QuerySet 作用:进行查询结果进行排序。 例:查询所有图书的信息,按照id从小到大进行排序。 BookInfo.objects.all().order_by('id') BookInfo.objects.order_by('id') 例:查询所有图书的信息,按照id从大到小进行排序。 BookInfo.objects.all().order_by('-id') 例:把id大于3的图书信息按阅读量从大到小排序显示; BookInfo.objects.filter(id__gt=3).order_by('-bread') 聚合函数 作用:对查询结果进行聚合操作。 sum count max min avg aggregate:调用这个函数来使用聚合。 返回值是一个字典 使用前需先导入聚合类: from django.db.models import Sum,Count,Max,Min,Avg 例:查询所有图书的数目。Count BookInfo.objects.aggregate(Count('id')) 返回值类型: {'id__count': 5} 例:查询所有图书阅读量的总和。 BookInfo.objects.aggregate(Sum('bread')) {'bread__sum': 126} count函数 返回值是一个数字 作用:统计满足条件数据的数目。 例:统计所有图书的数目。 BookInfo.objects.count() 例:统计id大于3的所有图书的数目。 BookInfo.objects.filter(id__gt=3).count() 查询相关函数返回值总结: get:返回一个对象 all:QuerySet 返回所有数据 filter:QuerySet 返回满足条件的数据 exclude:QuerySet 返回不满条件的数据 order_by:QuerySet 对查询结果进行排序 aggregate:字典 进行聚合操作 count:数字 返回查询集中数据的数目 get,filter,exclude参数中可以写查询条件。 查询集 all, filter, exclude, order_by调用这些函数会产生一个查询集,可以在查询集上继续调用这些函数。 查询集特性: 1) 惰性查询:只有在实际使用查询集中的数据的时候才会发生对数据库的真正查询。 缓存:当使用的是同一个查询集时,第一次的时候会发生实际数据库的查询, 1) 然后把结果缓存起来,之后再使用这个查询集时,使用的是缓存中的结果。 限制查询集: 可以对一个查询集进行取下标或者切片操作来限制查询集的结果。 b[0]就是取出查询集的第一条数据,b[0:1].get()也可取出查询集的第一条数据。如果b[0]不存在,会抛出IndexError异常,如果b[0:1].get()不存在,会抛出DoesNotExist异常。多条时抛MultiObjectsReturned 对一个查询集进行切片操作会产生一个新的查询集,下标不允许为负数。 exists:判断一个查询集中是否有数据。True False