Django admin:时区显示

CDK*_*CDK 5 python django django-admin

所以我正在创建一个应用程序,您可以在其中找到在各个位置发生的活动

在django-admin页面上,我希望能够修改活动(有效).

但是活动有一个开始时间 - 我希望这个开始时间与位置在同一时区.

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

starttime采用内联formset,因为它可以有多个开始时间.

我找到了一种在保存对象时更改日期时间的方法,但是当它在内联函数中呈现时,我无法找到修改它的方法.

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

Sie*_*yer 9

" 所以我希望它在活动管理页面上显示与位置相同的时区中的开始时间,但是当保存时,它应该转换为UTC时间. "

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

当您启用时区支持时,Django会解释在当前时区中的表单中输入的日期时间,并在cleaning_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)来设置时区参数,你就可以了.

  • 我最终在 admin.StackedInline 类的 init 中使用了 timezone.activate() 。这就像一个奇怪的魅力。非常感谢你。从来没想过要做这样的事!谢谢 (3认同)