我试图过滤一个DateTimeField与日期比较。我的意思是:
MyObject.objects.filter(datetime_attr=datetime.date(2009,8,22))
我得到一个空的查询集列表作为答案,因为(我认为)我没有考虑时间,但我想要“任何时间”。
Django中有简单的方法来做这个吗?
我在datetime中设置了时间,不是00:00。
我试图过滤一个DateTimeField与日期比较。我的意思是:
MyObject.objects.filter(datetime_attr=datetime.date(2009,8,22))
我得到一个空的查询集列表作为答案,因为(我认为)我没有考虑时间,但我想要“任何时间”。
Django中有简单的方法来做这个吗?
我在datetime中设置了时间,不是00:00。
当前回答
Model.objects.filter(datetime__year=2011, datetime__month=2, datetime__day=30)
其他回答
YourModel.objects.filter(datetime_published__year='2008',
datetime_published__month='03',
datetime_published__day='27')
//在注释后编辑
YourModel.objects.filter(datetime_published=datetime(2008, 03, 27))
不工作,因为它创建了一个时间值设置为0的datetime对象,因此数据库中的时间不匹配。
Model.objects.filter(datetime__year=2011, datetime__month=2, datetime__day=30)
现在Django在开发版本中有__date queryset过滤器来根据日期查询datetime对象。因此,它将很快在1.9中可用。
这产生了与使用__year, __month,和__day相同的结果,并且似乎对我有用:
YourModel.objects.filter(your_datetime_field__startswith=datetime.date(2009,8,22))
person = Profile.objects.get(id=1)
tasks = Task.objects.filter(assigned_to=person, time_stamp__year=person.time_stamp.utcnow().year)
我所有的模型都有time_stamp,所以我使用person对象来获取当前年份