【发布时间】:2014-09-19 14:14:32
【问题描述】:
我想根据两个值过滤一个表。其中是第一个的最高现有版本。首先,我从第一个模型中得到这两个值。
latest_versions = Version.objects.values('post').annotate(version=Max('version'))
这给了我一个字典列表,其中包含帖子名称及其最新版本。
[{name: xxx, version: 1.2}{name: yyy, version: 3.4}]
现在我想使用这个字典列表 (latest_versions) 作为另一个表的过滤器,该表具有名为 name 和 version 的列。
我认为这可能有效:
Post.objects.filter(**latest_versions)
但它没有,因为它是一个 ValueQuerySet,一个字典列表。但是,如果我遍历 ValueQuerySet 它可以工作,但我必须为每个实例进行数据库调用。
for latest_version in latestversions:
r = Post.objects.filter(**latest_version)
result = result + list(r)
Pythonic 的方法是什么?
提前致谢。
【问题讨论】:
标签: django list dictionary django-models filter