Django 从模型中获取所有最新的()
这是我的结构的伪视图:Django 从模型中获取所有最新的(),django,postgresql,optimization,Django,Postgresql,Optimization,这是我的结构的伪视图: Offer [id, match] - Odds [id, offer_id, time) - Odds [id, offer_id, time) - ..... 要基于time属性获取最新对象,我只需执行someOffer.latest()。我的问题是查询多个报价的latest()。我开始在offer.objects.filter中使用o的[offer.lobbs.latest()]——这显然是太多的查询,因此速度非常慢。然后我构造了这个查询
Offer [id, match]
- Odds [id, offer_id, time)
- Odds [id, offer_id, time)
- .....
要基于time
属性获取最新对象,我只需执行someOffer.latest()
。我的问题是查询多个报价的latest()
。我开始在offer.objects.filter中使用o的[offer.lobbs.latest()]
——这显然是太多的查询,因此速度非常慢。然后我构造了这个查询
Odds.objects.annotate(max_time=Max('offer__odds__time')).filter(time=F('max_time'))
这要快得多。然而,这在很大的概率上是非常非常缓慢的(>100000)。有没有人能很好地获取所有“最新”的多个对象
非常感谢,在原始SQL中,您可以在FROM子句中加入一个子查询,该子查询找到了每个对象的最大值(…)。但我不知道如何用Django ORM ish来表达,我认为使用这个:可能会有所帮助。