2011-02-08 105 views
0

基本上我試圖創建某種形式的動態表單,並試圖通過發佈請求更改CharField的值。簡單地說,我有以下領域在我的形式:如何以編程方式設置forms.CharField文本?

choice = forms.CharField(max_length=50) 

INIT形式的我有這樣的事情:

for key, value in request.post.items(): 
    if key == 'choice' and value != '': 
     self.fields['choice'] = value 

因爲我分配顯然是行不通的字符串(值)到CharField(選擇)。任何想法,不勝感激。

+0

爲什麼不只是傳遞`request.post`在構造函數? – 2011-02-08 05:50:45

+0

我實際上試圖動態地創建表單。所以我在構造函數中創建了其他'選擇的CharFields(基於帖子參數)並試圖用帖子值填充它們。 – Piva 2011-02-08 06:03:49

回答

1

你在找什麼東西沿線http://jacobian.org/writing/dynamic-form-generation/

在示例

它通過init

for i, question in enumerate(extra): 
      self.fields['custom_%s' % i] = forms.CharField(label=question) 

添加炭字段的X數目應能延長額外的不同的表單字段。

+0

不是我正在尋找的東西,但鏈接幫助我做了很多工作,謝謝。 – Piva 2011-02-10 23:44:44

2

這取決於您所指的字段的「值」。

如果你想改變什麼所示,當最初顯示的形式,你需要傳遞一個initial詞典與對應的字段名的關鍵:

self.initial['choice'] = 'myvalue' 

如果你想改變什麼被傳遞到驗證再到cleaned_data,您需要更改data參數:

self.data['choice'] = 'myvalue' 
相關問題