为什么 django 模型日期过滤器生成前一天的查询

why django model date filter generates query with a day before

import datetime
d = datetimte.datetime.today()
print d
2015-01-02 03:59:48.392104
print CourseDay.objects.filter(date__exact=d).query

SELECT `website_courseday`.`id`, `website_courseday`.`date`,
`website_courseday`.`presentation_id` FROM `website_courseday` 
 WHERE `website_courseday`.`date` = 2015-01-01 22:29:48

为什么它生成值前一天的日期?

我正在使用 django 1.4.10,mysql 作为数据库服务器。

您的主要问题似乎是混淆了 datetime 个对象和 date 个对象。

(我假设 CourseDaydate 字段是 DateField,因为 __exact 查询对于 DateTimeField.)

如果你只关心当地时间(如果你有 USE_TZ=False 似乎就是这种情况),解决方案很简单:

import datetime

d = datetime.date.today()  # note the difference
CourseDay.objects.filter(date__exact=d)  # should work as you expect