是否可以从Django admin.ModelAdmin
类创建子类?
我正在尝试做类似的事情:
class PageAdmin(admin.ModelAdmin):
form = PageAdminForm
# Plus many other stuff here (that I don't want to copy/paste in PlacePageAdmin to keep dry...)
class PlacePageAdmin(PageAdmin):
form = PlacePageAdminForm
def get_form(self, request, obj=None, **kwargs):
return super(PlacePageAdmin, self).get_form(request, obj, **kwargs)
def get_fieldsets(self, request, obj=None):
fieldsets = copy.deepcopy(super(PlacePageAdmin, self).get_fieldsets(request, obj))
fieldsets.insert(0,
('Place', {
'fields': (
('address', 'postcode', 'town'),
),
})
)
return fieldsets
def queryset(self, request):
return PlacePage.objects.filter(page_type=Page.PLACE)
但我无法正常工作:尝试访问PlacePageAdmin表单页时出现u"Key 'address' not found in Form"
错误。
有人做过这样的事吗?
非常感谢你!
编辑 - 表单代码:
class PageAdminForm(forms.ModelForm):
extra_field = forms.CharField()
class Meta:
model = Page
class PlacePageAdminForm(PageAdminForm):
class Meta:
model = PlacePage
答案 0 :(得分:0)
当然你可以,这是基本的python,你甚至可以创建mixins,你可以添加到你的类继承列表,这可能更有用 - 作为从多个源继承的更小和更简单的例子
你得到的错误与你的表格有关,很少有可能出错的事情最流行的是定义form.ModelForm中的哪些字段 - 这些字段在ModelForm类的Meta类中指定 - 继承存在问题,因此请确保在继承的表单中正确设置它
可能有一个未在第二种形式或模型中定义的字段 - 那么您的表单继承可能会失败