2011-11-23 34 views
8

Tôi ghi đè phương thức __init__ của Biểu mẫu của tôi. tôi có thể thiết lập giá trị ban đầu bằng cách làm như sau:Làm cách nào để sửa đổi giá trị bị ràng buộc cho trường trong dạng bị ràng buộc trong django?

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

Nhưng cho rằng nó là ràng buộc, gọi trên không có tác dụng. Tôi đã thử thực hiện việc này:

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

nhưng điều này không hiệu quả. Có cách nào để thực hiện việc này không?

+0

Tại sao bạn muốn sửa đổi dữ liệu bị ràng buộc? –

+1

Trong bức tranh lớn hơn, tôi đang sử dụng formwizard. Nếu lựa chọn của biểu mẫu trước đó đã thay đổi; Tôi muốn điền vào biểu mẫu tiếp theo với dữ liệu mới. – canadadry

Trả lời

9

Bạn có thể cập nhật của mẫu data dict

self.data['fieldname'] = new_value 

bound_data là một phương pháp, không phải là một thuộc tính, vì vậy bạn không thể đặt giá trị đó.

request.GETrequest.POST là không thay đổi, trừ khi bạn tạo copy(). Bạn có thể làm bản sao trong phương thức __init__ của mình hoặc trước khi bạn ràng buộc biểu mẫu.

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

Tôi đã thử điều này và nó đã ném lỗi: 'Ví dụ QueryDict này là bất biến' – canadadry

+1

Bạn cần phải sao chép' QueryDict' sau đó thay đổi điều đó. Tôi đã cập nhật câu trả lời của mình. – Alasdair

+0

Có vẻ như 'self.data' cũng không thay đổi. Tạo một bản sao của 'request.POST' như bạn đã đề xuất thực hiện thủ thuật. – mgalgs

Các vấn đề liên quan