2011-11-23 22 views
8

मैं अपने फॉर्म के __init__ विधि को ओवरराइड करता हूं। मैं निम्न कार्य करके प्रारंभिक मूल्य निर्धारित कर सकते हैं:मैं django में बाध्य रूप में किसी फ़ील्ड के लिए बाध्य मान को कैसे संशोधित करूं?

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

लेकिन यह देखते हुए कि यह स्वाभाविक है, ऊपर बुला कोई प्रभाव नहीं है। मैं यह कर की कोशिश की:

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

लेकिन यह काम नहीं करता। क्या ऐसा करने का कोई तरीका है? तो आप मान सेट नहीं कर सकता

+0

आप बाध्य डेटा को संशोधित क्यों करना चाहते हैं? –

+1

बड़ी तस्वीर में, मैं फॉर्म विज़ार्ड का उपयोग कर रहा हूं। यदि पिछले फॉर्म का चयन बदल गया है; मैं अगले डेटा को नए डेटा के साथ प्रीफिल करना चाहता हूं। – canadadry

उत्तर

9

आप प्रपत्र के data dict

self.data['fieldname'] = new_value 

bound_data अद्यतन कर सकते हैं, एक विधि, नहीं एक विशेषता है।

request.GET और request.POST अपरिवर्तनीय हैं, जब तक आप copy() नहीं बनाते। आप अपनी __init__ विधि में प्रतिलिपि बना सकते हैं, या फ़ॉर्म को बांधने से पहले।

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

मैंने कोशिश की और यह त्रुटि फेंक दी: 'यह क्वेरीडिक्ट उदाहरण अपरिवर्तनीय है' – canadadry

+1

आपको 'QueryDict' की प्रतिलिपि बनाने की आवश्यकता है, फिर उसे बदलें। मैंने अपना जवाब अपडेट कर लिया है। – Alasdair

+0

ऐसा लगता है कि 'self.data' भी अपरिवर्तनीय है। जैसा कि आपने सुझाव दिया है कि 'अनुरोध। POST' की प्रतिलिपि बनाना यद्यपि चाल है। – mgalgs

संबंधित मुद्दे

 संबंधित मुद्दे