我如何过滤Django中DateTimeField的日期?

我想过滤一个DateTimeField比较日期。 我的意思是:

MyObject.objects.filter(datetime_attr=datetime.date(2009,8,22))

我得到一个空的查询集列表作为答案,因为(我认为)我不考虑时间,但我希望“随时”。

Django中有这样一个简单的方法吗?

我有时间在设定的日期时间,它不是00:00


这种查找在django.views.generic.date_based中实现,如下所示:

{'date_time_field__range': (datetime.datetime.combine(date, datetime.time.min),
                            datetime.datetime.combine(date, datetime.time.max))} 

因为它非常详细,所以有计划使用__date运算符来改进语法。 查看“#9596比较DateTimeField与日期太难”了解更多详情。


YourModel.objects.filter(datetime_published__year='2008', 
                         datetime_published__month='03', 
                         datetime_published__day='27')

//在评论后编辑

YourModel.objects.filter(datetime_published=datetime(2008, 03, 27))

doest不起作用,因为它创建了一个时间值设置为0的日期时间对象,所以数据库中的时间不匹配。


下面是我用ipython的timeit函数得到的结果:

from datetime import date
today = date.today()

timeit[Model.objects.filter(date_created__year=today.year, date_created__month=today.month, date_created__day=today.day)]
1000 loops, best of 3: 652 us per loop

timeit[Model.objects.filter(date_created__gte=today)]
1000 loops, best of 3: 631 us per loop

timeit[Model.objects.filter(date_created__startswith=today)]
1000 loops, best of 3: 541 us per loop

timeit[Model.objects.filter(date_created__contains=today)]
1000 loops, best of 3: 536 us per loop

包含似乎更快。

链接地址: http://www.djcxy.com/p/6583.html

上一篇: How can I filter a date of a DateTimeField in Django?

下一篇: Django filter versus get for single object?