форма django: сообщение об ошибке с указанием даты и времени - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь добавить дату и время в свое сообщение об ошибке формы.К сожалению, он отображается в UTC (мой TIME_ZONE), но должен быть в текущем часовом поясе.

def clean(self):
    # print(get_current_timezone()) > Europe/Berlin
    cleaned_data = super(LegForm, self).clean()
    departure_scheduled = cleaned_data.get('departure_scheduled')
    # check departure in journey
    if departure_scheduled < self.instance.journey.start:
        journey_start = localize(self.instance.journey.start)
        # print(self.instance.journey.start.tzinfo) > UTC
        self.add_error(
            'departure_scheduled',
            _('Error Message (%(start)s).') % {'start': journey_start}
        )

print(get_current_timezone()) возвращает Europe/Berlin

print(self.instance.journey.start.tzinfo) возвращает UTC

Текущий часовой пояс активирован.Есть ли какие-либо равные localize() для преобразования объекта datetime в текущий часовой пояс?

1 Ответ

0 голосов
/ 29 января 2019

Я мог бы использовать:

journey_start = localize(self.instance.journey.start.astimezone(get_current_timezone()))

Но похоже на борьбу с поддержкой часового пояса Джанго.

ОБНОВЛЕНИЕ :

Спасибо Кевину КристоферуКомментарий Генри, вот инструмент django, который я искал:

from django.utils import timezone
journey_start = timezone.localtime(self.instance.journey.start)

https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#usage

...