模型是这样的:
class Application(models.Model):
application_id = models.IntegerField()
version_id = models.IntegerField()
# some other attributes
哪里 application_id
以及 version_id
共同决定 Application
条目,即一个应用程序可能有多个版本,而一个条目具有最大的 version_id
是应用程序的当前版本。
目标是找到所有应用程序的当前版本。sql(在mysql中)类似于:
SELECT
*
FROM application AS app
WHERE version_id = (SELECT max(version_id)
FROM application
WHERE application_id = app.application_id);
如何做到这一点?
请注意,这里的对象是过滤 QuerySet
,而不是只获取最大的 version_id
,这就像使用 GROUP BY
,或在django a values()
接着是一个 annotate()
. 我对当前版本的其他属性也感兴趣。
1条答案
按热度按时间gzjq41n41#
我自己想出来的。
OuterRef
以及SubQuery
是Django1.11中的新技巧,如本文所述。