Поддержка Ttimezone в Django-admin для DateTimeField? - PullRequest
0 голосов
/ 29 мая 2019

У нас есть конкурс моделей Django:

class Contest(models.Model):
    ...
    time_start = models.DateTimeField()

Django settings.py имеет следующие настройки TZ:

LANGUAGE_CODE = 'ru-ru'
TIME_ZONE = 'Europe/Moscow'
USE_I18N = True
USE_L10N = True
USE_TZ = True

Время сервера установлено на MSK + часовой пояс 03:

$ date
Wed May 29 12:41:14 MSK 2019

Что ожидается

  1. Django сохраняет UTC-datetime в базе данных.
  2. Когда я открываю объект для редактирования, django-admin преобразует UTC-datetime из базы данных в базу данныхчасовой пояс моего локального компьютера, который уже хранится в моем сеансе django.
  3. И наоборот, когда я сохраняю объект с датой, он преобразуется из моего локального компьютера TZ, вводится в администраторе django, в UTC и сохраняется в базе данных..

Что я получил

  1. Вместо преобразования полученного времени и даты в UTC, Django просто исправляет его со смещением TIME_ZONE и сохраняет в БД.Неважно, какой TZ используется на моем локальном компьютере - US / RU / и т. Д.Он всегда вычитает -03 часа, так как смещение «Европа / Москва» равно +03, и сохраняет результат в БД.
  2. Когда я изменяю TZ на своем локальном компьютере и повторно захожу на django-admin, объект datetime имеет значениене исправлено, чтобы уважать мой текущий клиент TZ, но всегда остается неизменным, несмотря на то, что я использую разные часовые пояса.

Итак, как это должно работать?

DB

MariaDB> describe contest;
+------------------+------------+------+-----+---------+----------------+
| Field            | Type       | Null | Key | Default | Extra          |
+------------------+------------+------+-----+---------+----------------+
| time_start       | datetime   | YES  |     | NULL    |                |

Django версия:

>>> django.__version__
'2.2.1'

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...