【发布时间】:2020-01-30 00:20:43
【问题描述】:
我有 4 个模型:
class App(models.Model):
...
class AppVersion(models.Model):
app = models.ForeignKey(App)
version_code = models.IntegerField()
class Meta:
ordering = ('-version_code',)
...
class Apk(models.Model):
version = models.OneToOneField(AppVersion)
size = models.IntegerField()
class Obb(models.Model):
version = models.ForeignKey(AppVersion)
size = models.IntegerField()
AppVersion 版本总是有一个Apk,但可能有0、1 或2 个Obb
我想用App 的总size 来注释QuerySet(这是Apk.size + 所有Obb.size 的总和对于给定的AppVersion)。
我的App QuerySet 看起来像这样:
qs = App.objects.filter(is_visible=True)
版本子查询是:
latest_versions = Subquery(AppVersion.objects.filter(application=OuterRef(OuterRef('pk'))).values('pk')[:1])
这个子查询总是给出App 中最新的AppVersion。
那么我应该使用什么子查询来注释qs 和size 属性计算如上所示?
【问题讨论】:
标签: django django-annotate django-subquery