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

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

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

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

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


当前回答

这产生了与使用__year, __month,和__day相同的结果,并且似乎对我有用:

YourModel.objects.filter(your_datetime_field__startswith=datetime.date(2009,8,22))

其他回答

这产生了与使用__year, __month,和__day相同的结果,并且似乎对我有用:

YourModel.objects.filter(your_datetime_field__startswith=datetime.date(2009,8,22))

嗯. .我的解决方案是有效的:

Mymodel.objects.filter(date_time_field__startswith=datetime.datetime(1986, 7, 28))

你可以根据日期进行过滤,因为日期格式与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)
person = Profile.objects.get(id=1)

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

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