Рассмотрим простую модель:В Django ORM, получить записи, поле которых значение является максимальным в QuerySet
class Person(models.Model):
name = models.CharField(max_length=256)
age = models.IntegerField()
Я хотел бы одно выражение, которое возвращает QuerySet
из всех Person
объектов, возраст которых максимальна стол. То есть говорят, что есть 20 Person
записей, а наибольший возраст - 70
, но есть 3 разных отчета, которые имеют это значение. Я хотел бы, чтобы мой запрос содержал именно те объекты 3 Person
.
Я предполагаю, что я мог бы сделать:
Person.objects.filter(age=Person.objects.aggregate(models.Max('age'))['age__max'])
Но ничего себе, что кажется, как реальный беспорядок. И он дважды попадает в базу данных. Тьфу.
Лучшие альтернативы?