2011-11-23 14 views
8

Formumun __init__ yöntemini geçersiz kılıyorum. ben aşağıdakileri yaparak başlangıç ​​değerini ayarlayabilirsiniz:Django'da ilişkili formdaki bir alanın bağlı değerini nasıl değiştiririm?

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

Ama yukarıda çağırarak, bağlı olduğu düşünülürse bir etkisi yoktur.

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

ama bu işe yaramazsa: bunu yaparken denedik. Bunu yapmanın bir yolu var mı? Orada değeri olamaz böylece formun data dict

self.data['fieldname'] = new_value 

bound_data güncelleyebilirsiniz

+0

Niçin bağlı verileri değiştirmek istiyorsunuz? –

+1

Büyük resimde, form sihirbazını kullanıyorum. Önceki formun seçimi değiştiyse; Bir sonraki formu yeni verilerle doldurmak istiyorum. – canadadry

cevap

9

bir yöntem değil, bir niteliktir. copy() oluşturmazsanız,

request.GET ve request.POST değişmezdir. Kopyayı, __init__ yönteminde veya formu bağlamadan önce yapabilirsiniz.

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

Bunu denedim ve şu hatayı attı: "Bu QueryDict örneği değişmez" – canadadry

+1

"QueryDict" öğesini kopyalamanız ve sonra bunu değiştirmeniz gerekir. Cevabımı güncelledim. – Alasdair

+0

"self.data" da değişmez gibi görünüyor. Önerdiğiniz gibi 'request.POST 'kopyasını yapmak hile yapar. – mgalgs

İlgili konular