2

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 番目のステップに渡す方法を見つける必要があるようです。

それを行う方法はありますか?

ありがとうございました!

4

1 に答える 1

1

process_stepのすべてのステップで各モデルを保存できるように、モデルを少しリファクタリングしました。また、セッションに情報を保存しています。

于 2011-07-26T02:47:31.420 に答える