7

コーディングを開始することを計画しているシナリオがあり、を使用することを考えていますdjango wizard

私の計画は、2つのステップでdjangoウィザードを構築することです。最初のステップは単純ですが、2番目のステップはもう少し複雑です。2番目のステップには、最初のステップで選択した値に基づいて形状を変更するフォームが含まれます。これは、私自身が行っていることを確認できます。私はすでに既存のすべての機能を調べましたが、それは簡単に実行できると思います。

しかし、私が直面している課題は、2番目のステップ自体にあることです。フォームとフォームセットがあります。フォームセットは1対多で作成できるため([記事]-> [画像])、2番目のステップに到達すると、ユーザーは1つ以上の画像を同じ記事にアップロードできます。

Googleのメーリングリストとstackoverflowで、フォームセットをdjangoウィザードクラスに渡すためにどこでも検索しようとしましたが、同じ手順で2つのフォームを渡すことはできないようです。

NewItemWizard.as_view([
    ('category',    CategorySelectionForm),
    ('article',        ArticleForm)
])

ご覧のとおり、上記のサンプルコードでは、ArticleFormとImageFormsetの両方を2番目のステップに渡すことができるようにしたいと思います。箱から出してこれを行う方法はありますか?

私が読んでいることに基づいて、get_context_dataのような関数を使用することは役立つと思いますが、それは非常にハッキーです。

def get_context_data(self, form, **kwargs):
    context = super(NewItemWizard, self).get_context_data(form=form, **kwargs)
    if self.steps.current == 'article':
        context.update({
            'image_formset': ImageFormset()
        })
    return context

誰でもより良いアプローチをアドバイスできますか?

乾杯、

4

1 に答える 1

7

それを行うための直接的なAPIはまだありませんが、ここで説明したようなクリーンなソリューションがあります。

https://code.djangoproject.com/ticket/18830

于 2013-03-27T13:53:59.903 に答える