Django仅将SplitDateTimeField的时间字段覆盖到选择字段

时间:2018-12-19 09:30:05

标签: django django-forms django-admin

我正在尝试将DateTimeField的{​​{1}}限制为具有以下选项TimeField06:0011:00的选择字段。到目前为止,我尝试了16:00并最终解决了这个问题。

formfield_overrides

我想知道我是否覆盖formfield_overrides = { models.DateTimeField: {'widget': SplitDateTimeWidget( time_attrs={"choices":settings.FEATURE_HOURS} )} } 的{​​{1}}包装器。还是可以扩展SplitDateTimeWidget并覆盖所有默认行为并实现我想要的?如果是,我该怎么办?

1 个答案:

答案 0 :(得分:0)

好吧,我创建了自定义类,该类扩展了admin.widgets.AdminSplitDateTime并在formfield_overrides中使用它

class CustomAdminSplitDateTime(admin.widgets.AdminSplitDateTime):
    def __init__(self, attrs=None):
        time_widget = forms.Select(choices=settings.FEATURE_HOURS)
        forms.MultiWidget.__init__(self,  [admin.widgets.AdminDateWidget, time_widget], attrs)

像这样在admin类中使用它:

formfield_overrides = {
    models.DateTimeField: {'widget': CustomAdminSplitDateTime()}
}

因此FEATURE_HOURS元组必须是时间对象。