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

时间:2014-01-10 07:57:03

标签: python mysql django datetime django-timezone

我的模型包含 DateTimeField 列。

我尝试通过sql查询将数据库 current_time 值的行直接插入到表中。

我对MySQL数据库的SQL查询如下:

INSERT INTO MyTable (..., my_datetime, ...) VALUES (..., current_time, ...)

得到:

  

RuntimeWarning:DateTimeField ModelName.field_name收到了一个天真的   datetime(2014-01-09 22:16:23),而时区支持处于活动状态。

如何通过sql查询直接将当前时间插入表中而不发出警告?

3 个答案:

答案 0 :(得分:41)

除了falsetru的答案之外,如果已经创建了日期时间,您可以将其转换为时区识别:

from django.utils import timezone
my_datetime = timezone.make_aware(my_datetime, timezone.get_current_timezone())

答案 1 :(得分:22)

使用django.utils.timezone.now代替datetime.datetime.now

from django.utils import timezone
current_time = timezone.now()

答案 2 :(得分:3)

您还可以使用localize pytz来识别日期时区,如here所述。

UTC:

import pytz
dt_aware = pytz.utc.localize(dt_naive)

任何其他时区:

import pytz
tz = 'Europe/Berlin' #or whaterver timezone you want
dt_aware = pytz.timezone(tz).localize(dt_naive)

here时区列表。