django中的全局formfield_overriding

时间:2011-12-19 14:29:58

标签: django django-forms

我的项目中有自定义文本字段小部件和许多表单。要使用此自定义小部件,我需要写:

formfield_overrides = {
    TextField: {'widget': CustomTextFieldWidget},
}
每个admin.ModelAdmin形式的

,这只是丑陋。

有没有办法只编写一次并在项目中的所有表单中使用自定义窗口小部件?

1 个答案:

答案 0 :(得分:7)

不,没有钩子可以覆盖整个项目中的formfield小部件。

您可以使所有模型管理类继承自admin.ModelAdmin的子类,然后您只需设置formfield_overrides一次。

class MyModelAdmin(admin.ModelAdmin):
    """
    This is the parent class that all model 
    admins in the project inherit from
    """
    formfield_overrides = {
        TextField: {'widget': CustomTextFieldWidget},
    }

class AppleAdmin(MyModelAdmin):
    ...

class BananaAdmin(MyModelAdmin):
    ...

#etc