2014-02-27 70 views
1

所以我使用的表單模板設置動態的選擇,我發現here動態形式返回KeyError異常

,因此我得到了

*forms.py* 
    class selectForm2(forms.Form): 
     def __init__(self, *args, **kwargs): 
      choices = kwargs.pop('my_choices') 
      super(selectForm2, self).__init__(*args, **kwargs) 
      self.fields["select_fields"] = forms.ChoiceField(choices=choices) 

,並在我的意見,我有

form = selectForm2(my_choices = models()) 

哪裏模型()創建元組,每個元組都有一個模型名稱和一個模型表:

def models(): 
    apps = get_app('Directories') 
    for model in get_models(apps): 
     model_classes.append((model._meta.verbose_name, model._meta.db_table),) 
    return model_classes 

但是當我運行它,my_choices通常在一個視圖返回在choices = kwargs.pop('my_choices')

+0

發佈完整的回溯。它真的在'form = selectForm2(my_choices = models())'行拋出異常,還是在別的地方? – lanzz

+1

我期望你有多種形式的實例,例如一次用於GET,一次用於POST,並且你忘記了在其中一箇中傳遞「選擇」。 –

+0

確實......就是這樣。我很困惑,因爲調試器提到的KeyError是在forms.py不在我的意見... – per7inac1ousQ

回答

3

一個KeyError異常,實例的形式兩次,一次爲GET和一次POST。你需要記住在兩個瞬間傳遞choices