2012-03-19 4 views

答えて

4

私は同じ問題を持っていた、と(さえジャンゴ1.4での)フォームウィザードはちょうど私のために動作しませんでした。いくつかのことが間違って始まり、デバッグはひどいものでした。

私は、既存のclasesに基づいていくつかのコードを書きました。私にとって素晴らしいソリューションを投稿した私の要点をご覧ください。ご意見やご提案(クラス名を含む)がありましたら、投稿してください。動的パスと(数学)グラフとして配置

  • マルチページフォームマネージャ、およびフォームの数(次のフォームは、実際の状態とユーザ入力に依存します)。ストレージと検証が処理されます。 Django-1.4のdjango.contrib.formtools.wizard.views.SessionWizardViewに基づいています。 https://gist.github.com/3098817

  • カスタムジャンゴのsessionStorage。ファイルを扱うすべての機能を削除しました。 Django-1.4のdjango.contrib.formtools.wizard.storage.base.BaseStoragedjango.contrib.formtools.wizard.storage.session.SessionStorageに基づいています。 https://gist.github.com/3080251

2

は何をやりたいのですか?

手順Xのn回その後、答えはイエスですが繰り返され、ウィザードを作成したい場合は、あなたがそれを行うことができますし、それは難しいことではありません。

は、あなただけの特定のパラメータ指定されたクラスを作成するウィザードクラスファクトリを作成する必要があるとすれば完了です。

あなたが意味する場合は、私は、オンザフライで、ウィザードの手順を変更することができます。 答えはまだはいですが、初期化後にウィザードの内部状態を変更する必要があるため、状況は少し複雑になります。

これはあなたが本当に私は本当にそれについて考えることをお勧め2番目のオプションを必要とする場合は、代替設計を見つけ、最後の手段として動的なウィザードアプローチを選択しようと、全然面白くないです。

+0

は、ウィザードのクラスファクトリのコードを提供するだろうか? この工場のパラメータは何ですか? – aRkadeFR

1

私もこの問題に苦しみました。 Tommaso Barbugliはクラスのための工場を作ることについて正しいです。 私は現在Django 1.6で作業しています。 URL内の

は、これを含める:

url('/create_wizard/', factory_wizard, name='factory_wizard') 

これは工場です:

class WizardClass(SessionWizardView): 
    ... 

def factory_wizard(request, *args, **kwargs): 
    parameter_to_know_which_step_number = # I let you implement this one (I did it by the session data) 
    ret_form_list = [FirstFormClass, SecondFormClass] 

    for _ in range(parameter_to_know...): 
     form_list.append(SecondFormClass) 

    class ReturnClass(WizardClass): 
     form_list = ret_form_list 

    return ReturnClass.as_view()(request, *args, **kwargs) 
関連する問題