django表单中的时区感知DateTime字段

时间:2015-09-21 06:04:30

标签: django django-forms timezone django-timezone

简而言之,我试图向用户显示使用时区感知日期时间对象初始化的DateTime字段,允许他们编辑并发回。如果没有做任何特别的事情,我会收到关于非时区感知日期时间返回到表单的DateTime字段的警告。

/django/db/models/fields/__init__.py:1474: RuntimeWarning:
    DateTimeField MyModel.datetimefield received a naive datetime (2015-09-09 15:55:00)
    while time zone support is active.

我从阅读the django time zones docs开始。我安装了pytz(pip install pytz)并确保设置了USE_TZ = True

我正在使用django-easy-timezones,它设置"当前"时区基于请求者的IP,呼叫timezone.activate()。据我了解,设置TIME_ZONE将被用作默认设置。我还使用django-bootstrap3-datetimepicker在我的表单中使用了一个漂亮的小部件。

时区似乎与初始表单数据一起发送。相反,"当前" timezone用于创建和发送天真的本地日期时间。从this我收集clean_[field]方法是为了假设在POST中返回的内容也在"当前"时区。这是自动完成还是我的意思是让我自己知道数据时区?如果是这样,为什么我会收到警告?

简单地来回发送时区更有意义,总是有时区感知日期时间吗?如果是这样,将日期时间转换为javascript会被here讨论,但我还没有找到一种很好的方式将其返回到DateTime字段格式(尤其是小部件不使用带时区的格式)。

0 个答案:

没有答案