Используйте другой часовой пояс для форм на сайте администратора django

Интересно, возможно ли для сайта администратора django принять два поля даты и времени одной модели в двух разных часовых поясах.

Например, предположим, у меня есть такая модель:

class A(models.Model):
    time_a = models.DateTimeField()
    time_b = models.DateTimeField()

Когда я использую сайт администратора django для добавления или редактирования экземпляра A, я хочу заполнить поле time_a в UTC+8 и time_b в UTC+9. т.е. если я заполняю time_a с 08:00 и time_b с 09:00, они совпадают в UTC.

Я знаю, что могу переопределить метод save() и обработать ввод вручную, выполнив вычисление timedelta самостоятельно, но мне интересно, есть ли более удобный или более подходящий способ сделать это.

1 ответ

Я думаю, вы могли бы расширить DateTimeField в django ( https://github.com/django/django/blob/master/django/db/models/fields/__init__.py), изменив его init для принятия еще одного аргумента default_timezone и измените метод to_python (который унаследован от DateField https://github.com/django/django/blob/master/django/db/models/fields/__ init.py # L1257), чтобы использовать этот default_timezone.

Я не проверял это

РЕДАКТИРОВАТЬ: То, что вы видите, как жирный инициал на самом деле является дард-инициал (инициализация с двумя подчеркиваниями до и двумя подчеркиваниями после). Я просто не понял, как отключить разметку здесь в stackru.

Другие вопросы по тегам