【发布时间】:2017-04-02 11:10:44
【问题描述】:
考虑一个简单的模型:
class Person(models.Model):
name = models.CharField(max_length=256)
age = models.IntegerField()
我想要一个表达式,它返回表中年龄最大的所有Person 对象的QuerySet。 IE。假设有 20 个 Person 记录,最大年龄是 70 但有 3 个不同的记录具有该值。我希望我的查询集恰好包含这 3 个 Person 对象。
我想我可以做到:
Person.objects.filter(age=Person.objects.aggregate(models.Max('age'))['age__max'])
但是哇,这看起来真是一团糟。它两次命中数据库。呸。
更好的选择?
【问题讨论】:
标签: django django-queryset django-orm