使用额外时无效使用组功能

时间:2018-02-15 16:26:59

标签: python django

我在https://groups.google.com/forum/#!topic/django-users/ly3ykSVx0B8看到它是一个django问题,但他们在链接资源上建议的解决方案对我的级别来说有点复杂。

基本上,

class Records(models.Model):
    task=models.CharField(max_length=10)
    unitcost=models.IntegerField()
    totalapplied=models.IntegerField()

因此,样本数据是:

Installation 3   30
Moving       4   10

我基本上想要回归

Installation 90
Moving       40

为此,我转向额外的工作:

Records.object.extra(select={'total':'SUM(unitcost * totalapplied)'}).values('task','total')

生成的查询组也在'total'上,生成一个mysql查询。是否有更简单的解决方法可以像类实例一样应用,因为我有类似的模型。

1 个答案:

答案 0 :(得分:1)

您可以在这里使用F()表达式:https://docs.djangoproject.com/en/2.0/ref/models/expressions/#f-expressions

并注释: https://docs.djangoproject.com/en/2.0/topics/db/aggregation/#combining-multiple-aggregations

Records.objects.annotate(total=Sum(F('unitcost') * F('totalapplied'))).values('task','total')

提示,你可以看到你的SQL查询:

 Records.objects.annotate(total=Sum(F('unitcost') * F('totalapplied'))).values('task','total').query.__str__()