【问题标题】:Use different timezone for forms in django's admin site在 django 的管理站点中为表单使用不同的时区
【发布时间】:2015-03-12 08:57:26
【问题描述】:

我想知道 django 的管理站点是否可以在两个不同的时区接受一个模型的两个日期时间字段。

例如,假设我有这样的模型:

class A(models.Model):
    time_a = models.DateTimeField()
    time_b = models.DateTimeField()

当我使用 django 的管理站点添加或编辑 A 的实例时,我希望我可以在 UTC+8 中填写字段 time_a,在 UTC+9 中填写 time_b。即如果我用 08:00 填充 time_a,用 09:00 填充 time_b,它们在 UTC 中是相同的。

我知道我可能会重写 A 的 save() 方法并通过自己进行 timedelta 计算来手动处理输入,但我想知道是否有更方便或更合适的方法来做到这一点。

【问题讨论】:

    标签: django django-forms django-admin django-timezone


    【解决方案1】:

    我认为您可以扩展 django 的 DateTimeField (https://github.com/django/django/blob/master/django/db/models/fields/init.py#L1332),将其 init 更改为接受另一个参数 default_timezone 并更改 to_python 方法(继承自 DateField https://github.com/django/django/blob/master/django/db/models/fields/ init. py#L1257) 使用该 default_timezone。

    我没有测试过

    编辑:您所看到的粗体初始化实际上是一个 dunder init(初始化前有两个下划线,后有两个下划线)。我只是没有意识到如何在 stackoverflow 中禁用标记。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-22
      • 2011-10-31
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      相关资源
      最近更新 更多