我的项目中有自定义文本字段小部件和许多表单。要使用此自定义小部件,我需要写:
formfield_overrides = {
TextField: {'widget': CustomTextFieldWidget},
}
每个admin.ModelAdmin
形式的,这只是丑陋。
有没有办法只编写一次并在项目中的所有表单中使用自定义窗口小部件?
答案 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