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

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

我得到一个空的查询集列表作为答案,因为(我认为)我没有考虑时间,但我想要“任何时间”。

Django中有简单的方法来做这个吗?

我在datetime中设置了时间,不是00:00。


当前回答

person = Profile.objects.get(id=1)

tasks = Task.objects.filter(assigned_to=person, time_stamp__year=person.time_stamp.utcnow().year)

我所有的模型都有time_stamp,所以我使用person对象来获取当前年份

其他回答

这样的查找在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和日期太难了”了解更多细节。

很简单,如果你有一个datetimefield你可以使用datetime。date。today()

context['now'] = Mymodel.objects.filter(date_time_field=datetime.date.today())

你可以根据日期进行过滤,因为日期格式与django的日期格式相同。默认格式为“ISO YYYY-MM-DD”

target_date = "2009-08-22"
qs = MyObject.objects.filter(datetime_attr__date=target_date)
Model.objects.filter(datetime__year=2011, datetime__month=2, datetime__day=30)

请参阅文章Django文档

ur_data_model.objects.filter(ur_date_field__gte=datetime(2009, 8, 22), ur_date_field__lt=datetime(2009, 8, 23))