4

所以,我想在表单向导中使用默认的 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

自动生成的管理表单似乎没有指定常规 ModelForm 所需的类元信息。

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

4

1 回答 1

1

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

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

在你的情况下,你将不得不做类似的事情

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

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

于 2014-03-05T18:22:04.510 回答