Django: USE_TZ = False не обновляет настройки базы данных Postgres - PullRequest
0 голосов
/ 10 марта 2019

Таким образом, у меня есть некоторая путаница в отношении Use_Tz в Django.

Когда проект был впервые запущен, для USE_TZ было установлено значение True, а для USE_I18N также было установлено значение True.

Однако последнеенеделю было решено установить эти настройки на False.Согласно документам здесь , Postgresql должен иметь возможность автоматически переключаться между True и False в зависимости от файла settings.py.

Однако в полях даты и времени в моих таблицах отображается метка часового пояса:+01 в конце.

Кроме того, когда я захожу в базу данных напрямую, используя команду \d survey_server_app_activitylog, я вижу следующее:

 date_reg       | timestamp with time zone |           

Все поля с датой и временем показываютта же запись.Но я считаю, что они должны быть установлены как timestamp without time zone

Итак, что дает?Я неправильно интерпретирую USE_TZ = False?Нужно ли вручную устанавливать столбцы в базе данных postgres?

1 Ответ

1 голос
/ 10 марта 2019

См. раздел документации по часовому поясу , касающийся конкретно PostgreSQL:

. В бэкэнде PostgreSQL даты хранятся как timestamp with time zone.На практике это означает, что он преобразует даты и времени из часового пояса соединения в UTC при хранении и из UTC во часовой пояс соединения при извлечении.

Как следствие, если вы используете PostgreSQL, вы можете переключаться междуUSE_TZ = False и USE_TZ = True свободно.Часовой пояс соединения с базой данных будет установлен на TIME_ZONE или UTC соответственно, так что Django будет получать правильные даты и времени во всех случаях.Вам не нужно выполнять какие-либо преобразования данных.

Это ответит на ваш конкретный вопрос о том, почему тип столбца не изменился.Не ясно, какую проблему это представляет для вас, поэтому трудно дать дальнейшие советы.Если вы попытаетесь изменить тип столбца вне Django, я не буду ожидать правильного поведения.

...