2022-09-30
F对象:
在shell中是用于两个有关联的属性之间的查询。
使用实例:
查询书籍表中阅读量大于评论量的记录
前提,进入pycharm,进入虚拟环境,进入shell环境。
首先,要使用F对象,那么就需要导入F对象
from django.db.models import F
后进行查询
BookInfo1.objects.filter(readcount__gt = F("commentcount"))
-------------------------------
Q对象
同F对象类似,可用于“与”,“或”,“非”的查询
首先导入包含Q的模块,
from django.db.models import Q
(1)查询id>2而且阅读量大于100的图书
BookInfo1.objects.filter(Q(id__gt = 2)&Q(readcount__gt = 100))
(2)查询id>8或者阅读量大于50的图书
BookInfo1.objects.filter(Q(id__gt = 8)|Q(readcount__gt = 50))
(3)查询不包含编号为3的图书
BookInfo1.objects.filter(~Q(id__gt = 3))
------------------------
聚合函数
聚合函数的类型有5个,Sum,Max,Min,Avg,Count
实例:
首先,需要导入包含的聚合函数的模块,如果使用Sum,就导入Sum,例:
from django.db.models import Sum
查询书籍表中阅读量的总和
BookInfo1.objects.aggregate(Sum("readcount"))
注:此处的聚合函数使用的是“aggregate”,而不是“aggredation”。是一个动词。
---------------------------------
排序
在Django项目中的表单中,排序默认是按照 升序 进行排序。如果想要进行降序的话,就在要排序的属性前面加上一个负号。
实例:
在书籍表中按照阅读量进行排序,默认为升序
BookInfo1.objects.all().order_by("readcount")
按照降序排列
BookInfo1.objects.all().order_by("-readcount")