Я думал, что Django создал столбцы даты и времени, которые не зависят от часового пояса, но когда я посмотрел на свою таблицу Postgres, я увидел, что записанные там значения содержат информацию о часовом поясе.
В дальнейшем я обнаружил, что сервер Postgresнаправляет Django для создания столбцов, использующих часовые пояса.
Из django / db / backends / postgresql / creation.py:
data_types = {
...
'DateTimeField': 'timestamp with time zone',
...
Схема показывает, что созданный столбец указан как «отметка времени»с часовым поясом ".
CREATE TABLE notification_notice
(
...
created timestamp with time zone NOT NULL,
...
Журнал Postgres показывает отправленный оператор обновления.Django создал оператор SQL, который использовал UTC в качестве часового пояса, как указано в моем файле настроек Django.
UPDATE "notification_notice" SET "sender_id" = 1, "group_id" = NULL, "notice_type_id" = 1, "content_type_id" = 21, "object_id" = 3, "created" = E'2011-11-11 22:31:08.022148' WHERE "notification_notice"."id" = 14
Так выглядит моя таблица.Созданный столбец имеет временную метку, которая имеет «-08» для своего часового пояса.Postgres должен проверять часовой пояс моих системных часов, чтобы найти часовой пояс.
my_db=# select * from notification_notice limit 1;
id | sender_id | group_id | notice_type_id | content_type_id | object_id | created | last_interaction_time
----+-----------+----------+----------------+-----------------+-----------+------------------------------+-----------------------
1 | | 3 | 21 | 53 | 6 | 2011-11-11 14:31:02.98882-08 |
(1 row)
Вопросы:
Разве у Django нет политики переключения на часовые пояса?
ПочемуБэкэнд Postgres использует часовые пояса для моделей. DateTimeField?Это требуется Postgres?
Есть ли способ заставить Django создавать столбцы меток времени в Postgres, которые не используют часовой пояс?