首页 > 解决方案 > Django 管理员:postgres DateTimeRangeField 未正确显示

问题描述

我的一些模型具有特定于 postgres 的django.contrib.postgres.fields.DateTimeRangeFields,并且这些字段在相应的管理面板中公开。我预计范围表单将包含两个 Django 样式的日期时间选择器,一个单独的用于日期部分,一个单独的部分用于时间部分(就像DateTimeField会一样)。但是,我得到两个文本输入,它们期望以非常特殊的格式输入。我有什么遗漏或必须单独配置吗?

相关代码为:

from django.contrib.postgres.fields import DateTimeRangeField
...

class MyModel(models.Model):
    time_off = DateTimeRangeField()

行政:

@register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    pass

标签: djangodjango-admin

解决方案


您正在寻找SplitDateTimeWidget

只需将管理部分更改为:

class MyModelAdminForm(forms.ModelForm):
    class Meta:
        model = MyModel
        widgets = {
          'time_off': RangeWidget(SplitDateTimeWidget())
        }


@register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    form = MyModelAdminForm

或根据formfield_overrides需要使用覆盖小部件。


推荐阅读