【发布时间】:2020-03-21 20:14:48
【问题描述】:
我有一个抽象模型,其中包含我想在管理视图中覆盖小部件的字段类型。
现在您无法在管理视图中注册抽象模型,因此我必须为从抽象模型继承的每个模型覆盖小部件。这感觉很笨拙 - 有没有更简洁的方法来做到这一点?
models.py
class MyAbstractModel(Model):
field_with_widget_i_want_to_override = MyFieldType()
class Meta:
abstract = True
class ModelA(MyAbstractModel):
extra_field = AnotherFieldType()
class ModelB(MyAbstractModel):
different_extra_field = ADifferentFieldType()
admin.py
class ModelAAdmin(ModelAdmin):
formfield_overrides = {
MyFieldType: {'widget': MyWidget},
}
class ModelBAdmin(ModelAdmin):
formfield_overrides = {
MyFieldType: {'widget': MyWidget},
}
admin.site.register(ModelA, ModelAAdmin)
admin.site.register(ModelB, ModelBAdmin)
现在我的实际项目有点复杂,所以我不想在注册模型时结合 ModelAdmins,还有更多的模型继承自抽象基础模型,所以我觉得我在重复自己很多。
或者,有没有办法全局覆盖管理员中用于字段类型的小部件(适用于所有模型)?
【问题讨论】:
标签: django