Чтение полей времени даты как UTC в Django

В настройках моего приложения поддержка часовых поясов активна USE_TZ = True

Итак, все мои DateTimeField в моих моделях преобразуются из моего местного часового пояса в UTC перед сохранением в базе данных.

Вопрос:

В некоторых случаях пользователь вводит значение поля datetime только с точностью до дня, например 2022-10-24 без временной части, и я уже принимаю этот формат в качестве входных данных. Но в таком случае я хочу сохранить это значение без временной зоны, чтобы позже оно было разобрано без временной зоны.

Почему это вызывает проблему?

Если пользователь вводит значение 2022-10-24 и его локальный часовой пояс равен UTC+2, оно будет сохранено в базе данных как 2022-10-23 22:00:00 UTC. Когда другой пользователь откроет тот же экземпляр и его локальный часовой пояс будет UTC+1, он увидит значение как 2022-10-23 23:00:00, в то время как я хочу, чтобы он увидел его с тем же значением, которое ввел первоначальный пользователь, поэтому оно должно быть 2022-10-24 00:00:00.

Частично проваленный суд:

Я пытался справиться с этим в своем ModelForm, разбирая введенный формат, затем заменяя информацию о часовом поясе на UTC, если она с точностью до дня.

from pytz import UTC
datetime_value = datetime_value.astimezone().replace(tzinfo=UTC)

Теперь значение сохраняется в базе данных как 2022-10-24 00:00:00 UTC. Но когда я читаю значение этого поля, оно будет разобрано как 2022-10-24 02:00:00, поскольку мой локальный часовой пояс UTC+2, однако я хочу, чтобы оно читалось как UTC.

Как я могу переопределить поведение чтения поля datetime, чтобы оно отображалось как UTC?

Вернуться на верх