姜戈的QuerySet
有两种方法,annotate
and aggregate
。文档说:
与aggregate() 不同,annotate() 不是终止子句。 annotate() 子句的输出是一个查询集。https://docs.djangoproject.com/en/4.1/topics/db/aggregation/#generate-aggregates-for-each-item-in-a-queryset https://docs.djangoproject.com/en/4.1/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-queryset
他们之间还有其他区别吗?如果不是,那为什么aggregate
exist?
我会关注示例查询而不是文档中的引用。Aggregate
计算值entire查询集。Annotate
计算汇总值每一个项目在查询集中。
聚合
>>> Book.objects.aggregate(average_price=Avg('price'))
{'average_price': 34.35}
返回包含平均价格的字典all查询集中的书籍。
注解
>>> q = Book.objects.annotate(num_authors=Count('authors'))
>>> q[0].num_authors
2
>>> q[1].num_authors
1
q
是书籍的查询集,但每本书都标注了作者数量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)