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

标签 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_a,用 09:00 填充 time_b,它们在 UTC 中是相同的。

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

最佳答案

我想你可以扩展 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。

我没有测试过

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

关于django - 在 django 的管理站点中为表单使用不同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29005404/

相关文章:

带有文件字段的 Django 表单在编辑实例时丢失文件

django - 如何在 Django 管理页面(在 formfield_for_foreignkey 内)中获取实际的对象 ID?

python - DateTimeField 在 Django 管理中没有日期选择器

python - Django-bleach导入并部署到heroku错误

python - Django 管理界面 : using horizontal_filter with ManyToMany field with intermediate table

mysql - Django 管理多对多错误

python - 如何动态地向 Django Model Admin readonly_fields 添加多个字段

python - Django ORM : how can i see last executed query on fly

Django 模型形式 : What is save(commit=False) used for?

python - Django - 在图像编辑表单中删除 "Currently"并将其替换为实际图像