Django聚合-在QuerySet中的每一个条目生成聚合
warning:
这篇文章距离上次修改已过430天,其中的内容可能已经有所变动。
在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的乘积总和。然后,我们可以遍历salesQuerySet,并打印出每个对象的total_sale。
注意,F()对象用于引用模型字段,以便进行数据库层面的操作。
评论已关闭