2

我在 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'))

有更好的方法吗?

谢谢。

4

1 回答 1

1

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

  1. 您通过定义自定义注释来扩展 API,或者
  2. 你在 python 中做部分算法,在你的 view/templatetag/whatever
于 2011-08-16T11:03:36.607 回答