Как использовать 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'))