Django日期有效检索ORM记录

时间:2013-06-29 18:03:08

标签: django

如果我有一个带有Employeestart_date日期字段的Django end_date模型,如果有不同的版本,我如何在ORM中使用get来有效地选择正确的记录记录是否根据这些日期字段随时间存在?

所以我可以有以下记录:

start_date, end_date,   emp
01/01/2013, 31/01/2013, Emp1
01/02/2013, 28/02/2013, Employee1
01/03/2013, 31/12/4000. EmpOne

如果今天的日期是10/02/2013,那么我会想要Employee1

类似于:

from django.utils import timezone
current_year = timezone.now().year
Employee.objects.get(end_date__year=current_year)

res = Employee.objects.filter(end_date__gt=datetime.now()).order_by('-start_date')

或者有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

你的第二个例子看起来不错。我更正了过滤器参数以匹配您的start_date约束。另外,我添加了LIMIT 1[:1])以获得更好的效果:

now = datetime.now()
employees = Employee.objects.filter(start_date__lt=now, end_date__gt=now).order_by('-start_date')
employee = employees[:1][0] if employees else None