aggregate 和 annotate 用于查询查询结果集的,区别在于aggregate 是全部结果集的查询,annotate则是分组查询的。
一般会用到功能函数Avg、Max、Min、Count、Sum。
举例来说
from django.db.models import Avg,Max,Min,Sum,Count
from django.db.models import Avg,Max,Min,Count,Sum
pAnnotate = Author.objects.annotate(total_pages=Sum('book'))
pAggre = Author.objects.aggregate(average_rating = Avg('book__rating'))
annotate 查询的是每个作者所拥有的书籍的总数,对QuerySet 集合使用Group By 根据作者来分组。
aggregate 则是总和了所有作者书籍的估价,然后取平均值。
参考链接: