Ответ 1
В дополнение к ответу falsetru, если дата-время уже создано, вы можете преобразовать его в известный часовой пояс:
from django.utils import timezone
my_datetime = timezone.make_aware(my_datetime, timezone.get_current_timezone())
У меня есть модель с столбцом DateTimeField.
Я пытаюсь вставить строку с базой данных current_time непосредственно в таблицу по sql-запросу.
Мой запрос sql для базы данных MySQL, например:
INSERT INTO MyTable (..., my_datetime, ...) VALUES (..., current_time, ...)
И получим:
RuntimeWarning: DateTimeField Имя_файла .field_name получил наивный datetime (2014-01-09 22:16:23), в то время как поддержка часовых поясов активна.
Как вставить текущее время непосредственно в таблицу по sql-запросу без предупреждения?
В дополнение к ответу falsetru, если дата-время уже создано, вы можете преобразовать его в известный часовой пояс:
from django.utils import timezone
my_datetime = timezone.make_aware(my_datetime, timezone.get_current_timezone())
Используйте django.utils.timezone.now
вместо datetime.datetime.now
.
from django.utils import timezone
current_time = timezone.now()
Вы также можете указать зону времени datetime с помощью localize
от pytz
, как описано здесь.
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)
И здесь список часовых поясов.