Django:查询时的天真日期时间

Posted

技术标签:

【中文标题】Django:查询时的天真日期时间【英文标题】:Django: Naive datetime on query 【发布时间】:2013-03-11 02:48:06 【问题描述】:

我正在尝试检索两个日期(星期一 -> 星期一)之间的所有数据。这是我的代码:

    some_day_last_week = datetime.datetime.now() - timedelta(days=7)
    monday_of_last_week = some_day_last_week - timedelta(days=(some_day_last_week.isocalendar()[2] - 1))
    monday_of_this_week = monday_of_last_week + timedelta(days=7)

    print "Someday last week %s" % some_day_last_week
    print "Monday of last week %s" % monday_of_last_week
    print "Monday of this week %s" % monday_of_this_week
    jobs = Jobs.objects.filter(created_time__gte=monday_of_last_week, created_time__lt=monday_of_this_week).order_by('-created_time')

    for job in jobs:
        print "Jobb: %s (%s)" % (job, job.created_time)

输出很好,但我收到了一个令我烦恼的 RuntimeWarning。这是(以及其他输出):

Someday last week 2013-03-14 15:11:32.819508
Monday of last week 2013-03-11 15:11:32.819508
Monday of this week 2013-03-18 15:11:32.819508
xxx/venv/lib/python2.7/site-packages/django/db/models/fields/__init__.py:808: RuntimeWarning: DateTimeField received a naive datetime (2013-03-11 15:11:32.819508) while time zone support is active.

运行时警告) xxx/venv/lib/python2.7/site-packages/django/db/models/fields/init.py:808: RuntimeWarning: DateTimeField 收到一个天真的日期时间 (2013-03-18 15: 11:32.819508)同时时区支持处于活动状态。 运行时警告) Jobb:网页设计师 (2013-03-13 09:14:02+00:00) [21/Mar/2013 15:11:32] “GET /jobs/feed/7days/HTTP/1.1”200 712

我在settings.py中设置了USE_TZ为True,created_time字段是这样的:

created_time = models.DateTimeField(_('Creation time'), default=datetime.now)

有人吗? :)

【问题讨论】:

【参考方案1】:
jobs = Jobs.objects.filter(
    created_time__range[monday_of_last_week, monday_of_this_week]).order_by('-created_time')

【讨论】:

全局名称“created_time__range”未定义。 __range 不应该开箱即用吗? :) 啊,你错过了一个=。但是,我仍然收到相同的运行时警告.. :/ 试试monday_of_last_week.datemonday_of_this_week.date 然后我得到: [u'\xab\xbb-value 的日期格式无效。 m\xe5 v\xe6re p\xe5 值 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ].'] 您收到该错误是因为您的值包含时间。它应该只是日期。

以上是关于Django:查询时的天真日期时间的主要内容,如果未能解决你的问题,请参考以下文章

Django 日期时间查询

抑制 django 天真的日期时间警告

Django:RunTimeWarning:DateTimeField 在时区支持处于活动状态时收到了一个天真的日期时间

RuntimeWarning:DateTimeField 收到一个天真的日期时间

在时区支持处于活动状态时收到一个天真的日期时间

如何将csv日期时间字符串保存到Django模型字段中[重复]