使用FormWizard实例化表单类时传递变量

时间:2012-01-15 02:36:31

标签: django django-forms

我有一个简单的表单,它使用动态设置的查询集:

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中的一个表单,但我无法弄清楚如何让FormWizard传递查询集。这有可能吗?

1 个答案:

答案 0 :(得分:0)

我认为您可以覆盖该特定向导的“get_form”方法

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