2011-11-23 47 views
8

我重寫了我的Form的__init__方法。 我可以通過以下步驟設置初始值:如何修改django中綁定形式的字段的綁定值?

self.fields['fieldname'].initial = .... 

但考慮到它綁定,調用上面沒有任何影響。 我試過這樣做:

self.fields['fieldname'].bound_data = .... 

但這不起作用。 有沒有辦法做到這一點?

+0

爲什麼要修改綁定數據? –

+1

在更大的圖景中,我使用了formwizard。如果先前表單的選擇已更改;我想用新數據預填下一個表格。 – canadadry

回答

9

您可以更新形式的data字典

self.data['fieldname'] = new_value 

bound_data是一種方法,而不是一個屬性,所以你不能設置的值存在。

request.GETrequest.POST是不可變的,除非您創建一個copy()。您可以在__init__方法中或在綁定表單之前進行復制。

data = request.POST.copy() 
form = MyForm(data=data) 
+2

我試過了,它拋出了錯誤:'This QueryDict instance is immutable' – canadadry

+1

你需要複製'QueryDict'然後改變它。我已經更新了我的答案。 – Alasdair

+0

看起來'self.data'也是不可變的。但是,按照你的建議製作'request.POST'的副本就可以做到這一點。 – mgalgs