2

我正在使用 Django 1.4 FormWizard(特别是 NamedUrlFormWizard)

首先,基础知识。我正在构建一个 3 步表单向导。最终的结果是定义一个模板,然后选择一些人来使用它,然后给他们发送一封电子邮件。

  • 第 1 步 - 输入基本模板数据(名称、描述等)
  • 第 2 步 - 定义 N 个字段的列表,每个字段都有自己的属性集,但结构相同
  • 第 3 步 - 选择一个或多个用户发送电子邮件,并在保存前自定义此电子邮件的内容

到目前为止,在表单向导中:

  • 第 1 步是一个标准的 Form 类,工作得很好。
  • 第 2 步是一个标准的 Formset 类,工作得很好。
  • 第3步给我带来了一些麻烦。它需要是一个表单集(电子邮件地址列表),还需要一个带有电子邮件文本的附加表单输入字段。我不知道如何在表单向导的同一页面上同时拥有一个表单集和非重复表单输入。

在一个完美的世界中,我可以将 Formset 定义为表单定义中的另一个表单字段。IE:

class EmailAddressForm(forms.Form):
    email = forms.EmailField()

class EmailAddressesAndText(forms.Form):
    emailText = forms.Textarea()
    emailAddressFormSet = formset_factory(EmailAddressForm, etc etc)

然后将我的 FormWizard 页面指向“EmailAddressesAndText”并完成它。但它不是一个完美的世界。关于如何实现这一目标的任何想法?

4

1 回答 1

0

您可以使用get_form()的方法WizardView自定义特定步骤的表单。参考:WizardView.get_form这个答案可以帮助你添加一个字段

另一种选择是在表单集中添加字段,并通过 JS 禁用和隐藏除第一个之外的所有实例。

于 2012-08-22T04:16:49.103 回答