【发布时间】:2012-08-22 08:41:29
【问题描述】:
我有这个模型:
class TimeInterval(models.Model):
startTime = models.DateTimeField()
endTime = models.DateTimeField()
如何仅使用 QuerySet API 聚合平均时间间隔?
我试过了:
qs = TimeInterval.objects.extra(
select={"duration": "endTime - startTime"}).aggregate(
Avg("duration"))
但它会抛出:
FieldError: Cannot resolve keyword 'duration' into field. Choices are:
endTime, startTime
【问题讨论】:
-
Django 不支持对使用
extra添加的字段进行聚合。 this question 的答案包含一些关于如何解决此限制的建议。 -
@GarethRees,是的,用DATEDIFF替换STRFTIME也是同样的问题
-
另一种解决方法依赖于
Avg(duration)等于Sum(endTime) - Sum(startTime) / Count或几乎等于Avg(endTime) - Avg(startTime)的事实
标签: python django django-queryset django-aggregation