Reputation: 1277
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?
Upvotes: 18
Views: 31170
Reputation: 8551
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.
Upvotes: 3
Reputation: 6015
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())
Upvotes: 42
Reputation: 369444
Use django.utils.timezone.now
instead of datetime.datetime.now
.
from django.utils import timezone
current_time = timezone.now()
Upvotes: 24