我正在执行两个查询以获取所有最新的匹配项,如下所示。有没有更有效的方法来检索所有具有相同最新日期的匹配对象?
class Match(models.Model):
team = models.CharField()
round_date = models.DateField()
date = Match.objects.latest('round_date').round_date
Match.objects.filter(round_date=date)
答案 0 :(得分:2)
您可以在此处使用Subquery
[Django-doc]:
mod2
将执行一个查询:
com.project.controllers
from django.db.models import Subquery
maximal = Match.objects.order_by('-round_date').values('round_date')[:1]
Match.objects.filter(round_date=Subquery(maximal))
查询因此是-除非您当然会“消费”它-不会被评估,而是用于构造子查询。
如果您可以在SELECT match.id, match.round_date
FROM match
WHERE match.round_date = (
SELECT U0.round_date
FROM match U0
ORDER BY U0.round_date DESC
LIMIT 1
)
上订购字段,但此处不是这种情况,我建议使用maximal
。