【发布时间】:2018-01-25 20:33:13
【问题描述】:
我正在尝试过滤在某一天安排的Matches。我不能这样做:
match_queryset.filter(start=date)
因为它也会按时间过滤,但我可以这样做:
match_queryset.filter(start__year=a_date.year, start__month=a_date.month, start__day=a_date.day)
但这太复杂了,我觉得可以有更简单的方法。
那我也可以使用范围:
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)
但这似乎有点矫枉过正,它可能会产生低效的查询。
我不能只查询实际日期吗?比如:
# this of course doesn't work
match_queryset.filter(start__date=date)
不用说我已经尝试过寻找解决方案但找不到任何解决方案。
【问题讨论】:
-
@AshishNitinPatil 这实际上是我的第二个解决方案
-
我在这句话中提到了它:因为它非常冗长,所以计划使用
__date运算符改进语法。详情请查看“#9596 Comparing a DateTimeField to a date is too hard”。 -
@AshishNitinPatil 从 2009 年开始,他们还没有实现
__date? -
为什么不添加
DateField?