Django QuerySet 中计算列的总和
给定以下贡献模型:
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
部分。谢谢!
Given the following Contribution
model:
class Contribution(models.Model):
start_time = models.DateTimeField()
end_time = models.DateTimeField(null=True)
is it possible, using the Django database API, to reproduce the following SQL statement?
SELECT SUM(end_time - start_time) AS total_duration FROM contribution;
I've figured out this much:
Contribution.objects.aggregate(total_duration=models.Sum( ??? ))
but I'm not sure about how to represent the end_time - start_time
part. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
目前不可能,聚合内有一个用于 F() 对象的 ticket,但没有什么希望。
我看到的唯一方法是通过 python 中的 sum 来解决问题:
Not possible at the moment, there's a ticket for F() objects inside aggregation, but nothing promising.
The only way i see is to workaround by sum in python: