Django admin:时区显示


问题内容

因此,我正在开发一个应用程序,您可以在其中找到发生在位置的活动。

我希望在django-admin页面上能够修改Activity(有效)。

但是,活动有开始时间-我希望此开始时间与该位置处于同一时区。

因此,我希望它在活动管理页面上与该位置所在的时区在同一时区中显示开始时间,但是在保存时应将其转换为UTC时间。

启动时间采用内联格式,因为它可以具有多个启动时间。

我找到了一种在保存对象时更改日期时间的方法,但是当它以内联东西呈现时,我无法找到一种修改日期时间的方法。

如何修改管理页面中呈现的数据?


问题答案:

因此,我希望它在活动管理页面上与该位置所在的时区一起显示开始时间,但保存后应将其转换为UTC时间。

根据Django的有关 时区感知输入 的文档 格式
https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#time-zone-
aware-input-in-
forms

):

启用时区支持后,Django会解释在当前时区中以表格形式输入的日期时间,并在cleaned_data中返回可识别的日期时间对象。

据我了解,这就是您想要的。这将导致我们转到 默认时区和当前时区
https://docs.djangoproject.com/en/1.10/topics/i18n/timezones/#default-
current-time-
zone),其中指出:

当前时区 是所使用渲染的时区。

您应该使用 activate() 将当前时区设置为最终用户的实际时区。否则,将使用默认时区。

因此,使用 activate()
https://docs.djangoproject.com/en/1.10/ref/utils/#django.utils.timezone.activate)设置
时区 参数,您就可以开始了。