关于python:DateTimeField收到一个日期时间

DateTimeField received a naive datetime

我有带datetimefield列的模型。

我尝试通过SQL查询将带有数据库当前时间值的行直接插入到表中。

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

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

得到:

RuntimeWarning: DateTimeField ModelName.field_name received a naive
datetime (2014-01-09 22:16:23) while time zone support is active.

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


除错误答案外,如果已经创建了日期时间,则可以将其转换为时区感知:

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


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

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


您还可以使用来自pytzlocalize来了解日期时间时区,如下所述。

UTC:

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

任何其他时区:

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

这里是时区列表。