聚合查询
aggregate(args,*kwargs):
通过对QuerySet进行计算,返回一个聚合值的字典,aggregate()中每一个参数都指定一个包含在字典中的返回值,即在查询集上生成聚合。
from django.db.models import Avg,Min,Sum,Max
price1 = models.Book.objects.all().aggregate(Avg("price"))
price2 = models.Book.objects.all().aggregate(Max("price"))
price3 = models.Book.objects.all().aggregate(Sum("price"))
price4 = models.Book.objects.all().aggregate(Min("price"))
print(price1,price2,price3,price4)
分组查询
annotate(args,*kwargs):
可以通过计算查询结果中每一个对象所关联的对象集合,从而得出总计算值(也可以是平均值或总和),即为查询集的每一项生成聚合。
models.Book.objects.values("author__name").annotate(Sum("price"))