Django聚合-在QuerySet中的每一个条目生成聚合
在Django中,我们可以使用annotate()
方法来对QuerySet中的每个条目生成聚合。annotate()
方法允许我们指定一个或多个聚合表达式,并将这些表达式添加为对象的新属性。
以下是一个简单的例子,假设我们有一个Sales
模型,它有price
和quantity
两个字段,我们想要计算每个条目的总销售额:
from django.db.models import Sum
from myapp.models import Sales
sales = Sales.objects.annotate(total_sale=Sum(F('price') * F('quantity')))
for item in sales:
print(item.total_sale)
在这个例子中,annotate()
方法创建了一个名为total_sale
的新属性,该属性包含每个Sales
对象的price
和quantity
的乘积总和。然后,我们可以遍历sales
QuerySet,并打印出每个对象的total_sale
。
注意,F()
对象用于引用模型字段,以便进行数据库层面的操作。
评论已关闭