2

私は Django 1.4 FormWizard (具体的には NamedUrlFormWizard) を使用しています。

まず、基本。作成中の 3 ステップのフォーム ウィザードがあります。最終的な結果は、テンプレートを定義し、それを使用する人を選択してから、電子メールを送信するという行に沿っています.

  • ステップ 1 - 基本的なテンプレート データ (名前、説明など) を入力します。
  • ステップ 2 - N フィールドのリストを定義します。それぞれに独自の属性セットがありますが、構造はすべて同一です。
  • ステップ 3 - メールを送信する 1 人以上のユーザーを選択し、保存する前にこのメールの内容をカスタマイズします

これまでのところ、フォーム ウィザードで:

  • ステップ 1 は標準の Form クラスであり、問​​題なく動作します。
  • ステップ 2 は標準の Formset クラスであり、問​​題なく動作します。
  • ステップ3は私にいくつかの問題を与えています。フォームセット (電子メール アドレスのリスト) である必要がありますが、電子メール テキストを含む追加のフォーム入力フィールドも必要です。フォームウィザード内の同じページにフォームセットと非繰り返しフォーム入力の両方を含める方法がわかりません。

完璧な世界では、Formset を Form 定義の別のフォーム フィールドとして定義できます。すなわち:

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 に答える