默认的Django Admin Forms和FormWizard

时间:2012-07-21 02:10:13

标签: python django django-forms

所以,我想在表单向导中使用默认的Django管理表单,因为在这个表单的第一页和第二页上有许多带有主键对象外键的对象,我想要能够内联编辑它们。我使用http://elo80ka.wordpress.com/2009/10/28/using-a-formwizard-in-the-django-admin/的示例作为基础,但是,他指定了他自己的管理员使用的表单。当然,如果您使用自己的自定义表单,则内联将无法使用。所以,我尝试了以下操作:

create_syllabus = SyllabusCreationWizard([SyllabusAdmin.form, CalendarForm])

但是,如果我这样做,则会收到以下错误:

'ModelForm' object has no attribute '_meta'
Request Method: GET
Request URL:    http://127.0.0.1:8000/admin/Charybdis/syllabus/add/
Django Version: 1.4
Exception Type: AttributeError
Exception Value:    
'ModelForm' object has no attribute '_meta'
Exception Location: C:\Python27\lib\site-packages\django\forms\models.py in __init__, line 229
Python Executable:  C:\Python27\python.exe

似乎自动生成的Admin表单未指定需要常规ModelForm的类Meta信息。

我的问题是,是否有任何方法可以使用FormWizard的默认管理表单。我是否需要以某种方式为管理表单提供Meta,如果是,如何?或者我是否需要完全做其他事情?

1 个答案:

答案 0 :(得分:1)

我想这是如何在ModelAdmin中创建和使用表单的问题。 如果你调用'SyllabusAdmin.form',它将是未初始化的ModelForm类。

Afaik ModelAdmin使用get_form实际创建和配置表单。

在您的情况下,您必须执行类似

的操作

form = SyllabusAdmin(SyllabusModel, admin.site).get_form(request)

实现你想要的......希望它能回答你的问题。