Среднее значение, рассчитанное по разнице значений Min и Max в Django - PullRequest
2 голосов
/ 16 августа 2011

У меня есть две простые таблицы в 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 Ответ

1 голос
/ 16 августа 2011

Как я уже ответил на тот же вопрос в Запрос данных из Django , вы не можете использовать только API ORM:

  1. Вы расширяете API, определяя свои пользовательские аннотации, или
  2. вы выполняете часть алгоритма в python, по вашему мнению / templatetag / что угодно
...