django形式:具有已知日期时间的错误消息

时间:2019-01-29 14:05:32

标签: django validation datetime django-forms django-timezone

我正在尝试将日期时间添加到表单错误消息中。不幸的是,它以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 :(得分:0)

我可以使用:

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

但是感觉就像在争夺Django的时区支持。

更新

感谢凯文·克里斯托弗·亨利(Kevin Christopher Henry)的评论,这是我正在寻找的Django工具:

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

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