我有一个通用的 ModelAdmin,admin.py
它替换了管理界面中的一些小部件。它作为我所有其他 ModelAdmins 的超类。它看起来像这样:
#in mainapp/admin.py:
from django.contrib import admin
from django.db import models
from suit.widgets import SuitSplitDateTimeWidget
class SuitedUpAdmin(admin.ModelAdmin):
formfield_overrides = {
models.DateTimeField: {
'widget': SuitSplitDateTimeWidget
},
#(...)
}
#(...)
在另一个 Django 应用程序中,我SuitedUpAdmin
用作 ModelAdmin 的超类,它也尝试替换一些小部件:
#in events/admin.py:
from django.contrib import admin
from django.db import models
from suit.widgets import AutosizedTextarea
from mainapp.admin import SuitedUpAdmin
class LocationAdmin(SuitedUpAdmin):
formfield_overrides = {
models.TextField: {'widget': AutosizedTextarea},
}
#(...)
formfield_overrides
问题是,当我为in分配一个新值时LocationAdmin
,我丢失了从SuitedUpAdmin
. 我该如何处理?我目前使用的解决方案是在LocationAdmin.render_change_form
方法中替换小部件实例,但我正在寻找更优雅和可读的选项。我想避免为此使用 ModelForms。期待您的建议!