简短描述:给定一个查询集myQueryset
,如何在max("myfield")
不实际检索所有行并max
在 python 中执行的情况下进行选择?
我能想到的最好的是max([r["myfield"] for r in myQueryset.values("myfield")])
,如果有数百万行,这不是很好。
详细描述:假设我的 Django 应用程序中有两个模型,City 和 Country。City 对 Country 有一个外键字段:
class Country(models.Model):
name = models.CharField(max_length = 256)
class City(models.Model):
name = models.CharField(max_length = 256)
population = models.IntegerField()
country = models.ForeignKey(Country, related_name = 'cities')
这意味着 Country 实例.cities
可用。假设我现在想为 Country 编写一个名为highest_city_population
返回最大城市人口的方法。来自 LINQ 背景,我的本能是尝试myCountry.cities.max('population')
或类似的东西,但这是不可能的。