在Django QuerySet中汇总计算列

时间:2010-03-11 11:26:06

标签: sql django django-models django-queryset

给出以下Contribution模型:

class Contribution(models.Model):
    start_time = models.DateTimeField()
    end_time = models.DateTimeField(null=True)

是否可以使用Django数据库API重现以下SQL语句?

SELECT SUM(end_time - start_time) AS total_duration FROM contribution;

我已经弄清楚了这一点:

Contribution.objects.aggregate(total_duration=models.Sum( ??? ))

但我不确定如何代表end_time - start_time部分。谢谢!

1 个答案:

答案 0 :(得分:1)

目前还不可能,聚合中的F()对象有ticket,但没有什么好处。

我看到的唯一方法是在python中使用sum解决方法:

sum([x[1]-x[0] for x in Contribution.objects.values_list('start_time', 'end_time')])