分组查询、聚合查询

聚合查询

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"))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容