我试图找到一些事件的累计持续时间,'开始'和'结束'字段都是django.db.models.DateTimeField
字段。如何使用django ORM来聚合计算字段? (没有原始SQL)
我想这样做本来应该这样写:
from django.db.models import F, Sum
from my.models import Event
Event.objects.aggregate(anything=Sum(F('start') - F('end')))
# this first example return:
# AttributeError: 'ExpressionNode' object has no attribute 'split'
# Ok I'll try more SQLish:
Event.objects.extra(select={
'extra_field': 'start - end'
}).aggregate(Sum('extra_field'))
# this time:
# FieldError: Cannot resolve keyword 'extra_field' into field.
我不能agreggate(SUM)开始,分别终止然后在。减去蟒蛇因为DB不能总datetime对象。
一个没有原始sql的好方法吗?
您的Delorean似乎很好地运行;-)。但事实上,如果我的项目仍然存在,那么我无法再构建SQL中的总和,因为我弥补了数量巨大的数额(星期日,星期日,夜晚,白天......) – christophe31