I have model with DateTimeField column.
I'm try to insert row with database current_time value directly into table by sql query.
My sql query for MySQL database like:
INSERT INTO MyTable (..., my_datetime, ...) VALUES (..., current_time, ...)
And get:
RuntimeWarning: DateTimeField ModelName.field_name received a naive datetime (2014-01-09 22:16:23) while time zone support is active.
How to insert current time directly into table by sql query without warning?
Further to falsetru's answer, if the datetime has already been created you can convert it to timezone aware:
from django.utils import timezone
my_datetime = timezone.make_aware(my_datetime, timezone.get_current_timezone())
Use django.utils.timezone.now
instead of datetime.datetime.now
.
from django.utils import timezone
current_time = timezone.now()
You can also make the datetime time zone aware with localize
from pytz
, as explained here.
UTC:
import pytz
dt_aware = pytz.utc.localize(dt_naive)
Any other time zone:
import pytz
tz = 'Europe/Berlin' #or whaterver timezone you want
dt_aware = pytz.timezone(tz).localize(dt_naive)
And here the list of timezones.
来源:https://stackoverflow.com/questions/21038881/datetimefield-received-a-naive-datetime