Formwizard を使用して、1 つのモデルに一致するウィザードを開発しています。また、私のモデルと他のモデルとの関係により、inlineformset_factory を使用してテンプレートにフィールドを表示しています。
モデル属性の同じモデルで 2 つのフォームを作成しました。ウィザードで使用する 2 つのフォームを区別するために、fields 属性を変更しました。
今のところ、フォーム情報をウィザードに保存するために、次のことを行っています。
def done(self, request, form_list):
instance = Sale()
for form in form_list:
for field, value in form.cleaned_data.iteritems():
setattr(instance, field, value)
instance.save()
これはうまく機能しますが、インラインフォームセットを保存しません
だから私はdoneメソッドにこれを追加しました:
picture_formset = ProductPictureFormset(request.POST, instance=instance)
if picture_formset.is_valid():
picture_formset.save()
しかし、これを行うと、Django で次のエラーが発生します。
Exception Type: ValidationError
インライン フォームセットに含まれるデータがステップ間で渡されないことに気付きました。これは、現在ウィザードにインライン フォームセットを追加する方法です。
def parse_params(self, request, *args, **kwargs):
if self.step == 0:
self.extra_context.update({
'picture_formset': ProductPictureFormset(),
'brand_attribute_formset': BrandAttributeFormset()
})
しかし、これらのフォームで取得したデータを 2 番目のステップに渡す方法を見つける必要があるようです。
それを行う方法はありますか?
ありがとうございました!