0

我的 Django 应用程序中有以下行:

last_job_instance = (JobInstance.objects.filter(job_type = job_type).filter(agent = agent).order_by('-execution_end_date'))[0]

我希望它在 O(1) 时间内运行 - 或者换句话说 - 我只想根据日期从数据库中提取最后一个作业实例。

我的问题是上面的查询集访问数据库一次,或者首先获取所有作业实例对象,按日期对它们进行排序,然后才得到第一个(即 O(nlogn) )。

非常感谢 !

提达尔

4

1 回答 1

0

Use latest("execution_end_date") on your queryset:

lji = JobInstance.objects.filter(job_type=job_type, agent=agent).latest('execution_end_date')

Or add it to your model's Meta class like so:

class JobInstance(models.Model):

    ....

    class Meta:
        get_latest_by = "execution_end_date"
于 2013-08-20T19:36:23.277 回答