2012-01-15 7 views
0

を使用してフォームのクラスをインスタンス化するとき、私は動的に設定されているクエリセットを使用して、簡単なフォーム持つ変数を渡す:私はFormWizardの私の形態の一つとしてこれを使用したいフォームウィザード

class FooForm(forms.Form): 
    bar = forms.ModelChoiceField(queryset = Bar.objects.none()) 

    def __init__(self, queryset=None, *args, **kwargs): 
     super(FooForm, self).__init__(*args, **kwargs) 
     self.fields['bar'].queryset = queryset  

を、しかし、私はどのようにFormWizardをクエリセットに渡すことができるかわかりません。これはまったく可能ですか?

答えて

0

は、私はあなたがその特定のウィザード

class MyWizard(FormWizard): 
    def __init__(self, *args, **kwargs): 
     self.querysets = kwargs.pop('querysets', None) 
     super(self, MyWizard).__init__(*args, **kwargs) 

    def get_form(self, step, data=None, *args, **kwargs): 
     return self.form_list[step](data, prefix=self.prefix_for_step(step), initial=self.initial.get(step, None), queryset=self.querysets.get(step, None)) 

    def done(self, *args, **kwargs): pass 
+0

感謝のために「get_form」メソッドをオーバーライドすることができると思います!私はこれが実行可能な回避策だと思います。 'FormWizard'コードでは、' __init__'や 'get_form'のために明示的に"上書きしてはいけません "と言いますが、これを行う良い方法はありません。ドキュメントを見ている開発版ではこれがサポートされているようですが、実装方法は明示されていません。とにかく、もう一度ありがとう! – stahlous

関連する問題