2

FormWizard を作成しようとしています。これにより、ユーザーは「日付」を 1 回だけ入力し (ステップ 1)、次に (ステップ 2)、名前と関連する金額を入力します。「名前」と関連する「金額」ごとに、モデルのインスタンスを保存したいと思います (フィールド: 日付、名前、金額)。

手順 2 で、FormSet を使用してみましたが、Wizard ビューは単にフィールドをレンダリングしていません。「ステップ 2/2」と [送信] ボタンのみが表示されます。

# In forms.py

class FormForDate(forms.Form):
'''Only for date'''

    date = forms.DateField(initial = datetime.date.today()) 

class AccountaModelForm(ModelForm):

    class Meta:
        model = Account #model has 3 field: name, date, amount
        exclude = ['date']

class AccountsFormSet(forms.Form):

    amount_formset = modelformset_factory(Account, form=AccountaModelForm, extra=10, exclude=('date'))
    amount_s_formset = amount_formset(queryset=Account.objects.none(),)

urls.py 内 (とりわけ):

url(r'^form/$', AccountMultiple.as_view([FormForDate, AccountsFormSet]))

そしてviews.pyで

class AccountMultiple(SessionWizardView):

    def done(self, form_list, **kwargs):

        for form in form_list:
            print form #I am just doing something

        return render_to_response('app/formset.html', {
            'form': [form.cleaned_data for form in form_list],
        })

このコードで何か間違ったことをしていますか? または、テンプレートに問題がありますか (私は Django docs のものを使用しました: here ) または、私が見逃している 3 番目の可能性がありますか?

4

1 に答える 1

1

複数の問題があります。

  • から派生AccountsFormSetしたため、モデルフォームセットではないようですForm

  • WizardView.done()メソッドは、最後のステップが送信され、フォームが有効なときに呼び出されます。そのため、フォームセットをレンダリングすると、必要なものが得られない場合があります。

  • ステップ 2 では、フォームセットを適切にレンダリングする別のテンプレートを指定する必要があります。

于 2012-10-13T06:46:40.830 に答える