2015-09-18 61 views
0

我試圖在視圖中動態地設置選擇字段的初始值。但它不工作,不知道什麼是錯的:Django。動態選擇字段的初始值

views.py

... 
form = FormEditGroup(initial={ 
      'choices_a': group.get_a(), 
      'choices_i': group.get_i(), 
      }) 

get_a()是返回「打開」或「關閉」,get_i()返回「管理員」或「所有的模型方法」。

forms.py

class FormEditGroup(forms.Form): 
    choices_a = (("closed", "Closed"), ("open", "Open")) 
    choices_i = (("all", "All"), ("admins", "Admins")) 

    a = forms.ChoiceField(... choices=choices_a), 
    i = forms.ChoiceField(... choices=choices_i), 

它不設定初始值是什麼get_a()get_i()回報。

回答

1

您應該將initial字典中的表單字段名稱作爲鍵傳遞。

從文檔上Form.initial

這種說法,如果給定的,應該是一個字典映射字段名到 初始值。

更改'choices_a''choices_i'鍵,表單字段名稱分別ai

試試下面的代碼:

form = FormEditGroup(initial={ 
      'a': group.get_a(), # initial value for 'a' 
      'i': group.get_i(), # initial value for 'i' 
      })