【发布时间】:2017-06-29 01:17:18
【问题描述】:
我在 django 中有一张这样的表:
class Observation:
plant = model.ForeignKey
Trait = model.ForeignKey
value = model.CharField
creation_time = model.DateTimeField
我想进行查询以仅获取具有独特植物/性状组合的最新行。例如:
row1 plant1 trait1 value1 dateyesterday
row2 plant1 trait1 value3 datetoday
row3 plant1 trait2 value1 datetoday
查询应该只返回 row2 和 row3
我已经用 SQL 解决了:
SELECT * FROM vavilov_observation AS o
WHERE o.creation_time = (SELECT MAX(creation_time)
FROM vavilov_observation AS o2
WHERE o.plant_id=o2.plant_id AND o.trait_id=o2.trait_id)
有人可以帮我把这个 SQL 转换成 django 查询集吗?
到目前为止,我发现的唯一解决方案是使用此 sql 创建一个原始查询集,以从中获取 pks 并在 Observations.objects.filter(observation_id__in=rawquery_ids) 查询中使用它们。
这种方法的可扩展性不好。在其中一个数据库中,我有 500.000 行,并且在生产中使用需要很长时间。
有什么帮助吗?
提前致谢 佩奥
【问题讨论】: