Django聚合:两个字段相乘的总和
我有一个类似这样的模型:
class Task(models.Model):
progress = models.PositiveIntegerField()
estimated_days = models.PositiveIntegerField()
现在,我想Sum(progress *
estimated_days)
在数据库级别进行计算。使用Django聚合,我可以获取每个字段的总和,但不能获取字段相乘的总和。
-
更新: 对于 Django > = 1.8,请遵循@kmmbvnr提供的答案
可以使用Django ORM:
这是您应该做的:
from django.db.models import Sum total = ( Task.objects .filter(your-filter-here) .aggregate( total=Sum('progress', field="progress*estimated_days") )['total'] )
注意:如果两个字段的类型不同,例如
integer
&float
,则应将要返回的类型作为的第一个参数传递Sum
这是一个较晚的答案,但我想它将帮助寻找相同内容的人。