Django日期有效检索ORM记录

Django日期有效检索ORM记录,django,Django,如果我有一个DjangoEmployee模型,其中有一个start_date和end_date日期字段,我如何在ORM to date中使用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

如果我有一个Django
Employee
模型,其中有一个
start_date
end_date
日期字段,我如何在ORM to date中使用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)


还是有更有效的方法来做同样的事情?

您的第二个示例看起来不错。我更正了过滤器参数以匹配开始日期约束。此外,我还添加了一个
限制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

如果有多行与当前日期匹配,该怎么办?记录只有一个生效日期版本。是否搜索与当前时间相比最近的结束日期?否,我正在搜索结束日期大于或等于今天日期,开始日期小于或等于今天日期的记录。
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