【发布时间】:2013-10-15 12:30:23
【问题描述】:
是否可以从 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
【问题讨论】:
-
是的,你可以。你已经在做。但我认为你的错误是在 PlacePageAdminForm 表单中,而不是在你的模型管理子类中
-
添加您的表单类代码。
-
感谢您的回答:我编辑了我的消息以添加表单类代码。
-
不知道这是怎么回事?
-
这2种表格怎么指向不同的型号?在我看来,它们应该代表相同的模型
标签: python django django-forms django-inheritance