平均值根据Django中Min和Max值的差异计算得出

时间:2011-08-16 08:02:36

标签: django django-queryset django-aggregation

我在Django中有两个简单的表,如下所示:

class Session(models.Model):
    id = models.AutoField(primary_key=True)

class Track(models.Model):
    id = models.AutoField(primary_key=True)
    session = models.ForeignKey(Session)
    when = models.DateTimeField(null=False, auto_now_add=True)

我需要找到所有会话的平均持续时间。通过减去具有最低when值的最高when值来计算会话的持续时间。我可以这样做:

Session.objects.all().annotate(duration=Max('track__when') - Min('track__when')).aggregate(Avg('duration'))

有更好的方法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

正如我已经在Querying data from Django中回答了同样的问题,你不能只使用ORM API:

  1. 您可以通过定义自定义注释来扩展API,或
  2. 你在python中执行算法的一部分,在你的view / templatetag / whatever