2012-01-15 39 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以此作爲我的一種形式,但我無法弄清楚如何讓FormWizard傳遞給查詢集。這可能嗎?

回答

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 
+0

謝謝!我認爲這是一個可行的解決方法。在'FormWizard'代碼中,它明確地說「__init__」或「get_form」不應該被「覆蓋」,但我沒有看到更好的方法來做到這一點。看起來這可能在查看文檔的開發版本中得到支持,但我仍然沒有明確地看到如何實現它。無論如何,再次感謝! – stahlous 2012-01-16 03:41:26

相關問題