在django的管理站点中为表单使用不同的时区

时间:2015-03-12 08:57:27

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

我想知道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_b用09:00填充time_a,它们在UTC中是相同的。

我知道我可以覆盖A的save()方法并自行处理输入,并自行进行timedelta计算,但我想知道是否有更方便的方法或更合适的方法来执行此操作。

1 个答案:

答案 0 :(得分:1)

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

我没有测试过那个

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