Django过滤所有包含最新日期的对象

时间:2018-10-16 13:34:37

标签: django

我正在执行两个查询以获取所有最新的匹配项,如下所示。有没有更有效的方法来检索所有具有相同最新日期的匹配对象?

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)

1 个答案:

答案 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