Как использовать group by, max столбца, а также получить другие столбцы модели из кверисета Django?

У меня есть модель, которая выглядит следующим образом

class Documents(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    uid = models.CharField(max_length=64)
    version = models.IntegerField()
    reviewed_dtm = models.DateTimeField(null=True)
    timestamp = models.DateTimeField(auto_add_now=True)
    document = models.FileField()

Мне нужна средняя разница во времени между временными метками для максимальной версии и минимального номера для каждого uid. В основном я хочу знать среднее время, которое требуется для того, чтобы документ был рассмотрен пользователем с момента его создания. Рассмотрение необязательно, если пользователь считает документ хорошим, то он отмечает его как рассмотренный, или же отправляет его на новую версию. Затем для uid делается еще одна запись с обновленной версией.

Похоже, что вы ищете функцию окна . Если вы не знакомы с ней, прежде всего, прочитайте, как использовать ее в чистом sql, чтобы понять эту концепцию

Я написал для него ORM-запрос. Вот он:

Documents.objects.values('uid').annotate(difference = Max('reviewed_dtm')-Min('timestamp')).aggregate(Avg('difference'))

Вернуться на верх