我的Django应用程序中有以下行:
last_job_instance = (JobInstance.objects.filter(job_type = job_type).filter(agent = agent).order_by('-execution_end_date'))[0]
我想让它在O(1)时间内运行 - 换句话说 - 我想根据日期将数据库中的最后一个作业实例拉出来。
我的问题是上面的查询集命中了数据库一次,或者先获取所有的作业实例对象,按日期排序,然后才得到第一个(即O(nlogn))。
非常感谢!
Tidhar
答案 0 :(得分:0)
在您的查询集上使用latest("execution_end_date")
:
lji = JobInstance.objects.filter(job_type=job_type, agent=agent).latest('execution_end_date')
或者将其添加到模型的Meta类中,如下所示:
class JobInstance(models.Model):
....
class Meta:
get_latest_by = "execution_end_date"