フォームウィザード内でフォームセットを使用したいと考えています。
class Model1(models.Model):
customerid = models.CharField(max_length=20)
Name = models.CharField(max_length=40)
class Model1Form(ModelForm):
class Meta:
model = Model1
class Model2(models.Model):
product = models.CharField(max_length=100)
price = models.DecimalField(max_digits=5, decimal_places=2)
class Model2Form(forms.Form):
product = forms.ModelChoiceField(queryset=Model2.objects.all())
amount = forms.IntegerField(required=False)
Model2Formset = formsets.formset_factory(Model2Form)
私のurls.pyで:
(r'^testwizard/$', TestWizard.as_view([Model1Form, Model2Formset])),
基本的なビューを使用して、フォームを投稿した結果を確認します。
class TestWizard(SessionWizardView):
def done(self, form_list, **kwargs):
return render_to_response('template', {
'form_data': [form.cleaned_data for form in form_list],
})
フォームセットに複数のエントリがある場合、1 つのエントリしか表示されません。
{'customerid': u'7676', 'Name': u'7', 'klantnummer': u'7'} [{'product': <Model2: Bike>, 'amount': 7}]
私は期待しました:
{'customerid': u'7676', 'Name': u'7', 'klantnummer': u'7'} [{'product': <Model2: Bike>, 'amount': 7},{'product': <Model2: Plane>, 'amount': 5}]
ドキュメントには次のように記載されています。
WizardView は、ModelForms と ModelFormSets をサポートしています。>as_view() メソッドは、initial_dict に加えて、>ModelForm および ModelFormSet のインスタンスを含む必要がある instance_dict 引数を取ります。initial_dict と同様に、これらのディクショナリ キーの値は、フォーム リストのステップ番号と等しくなければなりません。
残念ながら、ここで何を意味するのかわかりません。