Django:datetime按日期忽略时间过滤

dab*_*aba 5 python django

我正在尝试过滤Match某天计划的es。我不能只是这样做:

match_queryset.filter(start=date)
Run Code Online (Sandbox Code Playgroud)

因为它也会按时间过滤,但是我可以这样做:

match_queryset.filter(start__year=a_date.year, start__month=a_date.month, start__day=a_date.day)
Run Code Online (Sandbox Code Playgroud)

但这太复杂了,我觉得可能有一种更简单的方法。

然后,我还可以使用范围:

t0 = datetime.datetime.combine(a_date, datetime.time(0, 0))
t1 = datetime.datetime.combine(a_date, datetime.time(23, 59, 59))
match_queryset.filter(start__gte=t0, start__lte=t1)
Run Code Online (Sandbox Code Playgroud)

但这似乎是一个过大的选择,并且可能会生成效率低下的查询。

我不能只是查询以实际日期为目标吗?就像是:

# this of course doesn't work
match_queryset.filter(start__date=date)
Run Code Online (Sandbox Code Playgroud)

无需说我已经尝试寻找解决方案,但找不到任何解决方案。

sha*_*k3r 7

从Django 1.9开始,您可以使用__date字段查找,就像您在问题中提到的那样。对于较旧的版本,您将不得不使用其他方法。