2013-02-02 14 views
14

बनाने के लिए पास पैरामीटर पास करें मैं अपने फॉर्म में पैरामीटर कैसे पास करूं?डीजेगो फॉर्म:

someView().. 
    form = StylesForm(data_dict) # I also want to pass in site_id here. 

class StylesForm(forms.Form): 
    # I want access to site_id here 

संपादित करें, नीचे दिए गए उत्तर के आधार पर:

someView().. 
    form = StylesForm(data_dict, site_id = 1) 

class StylesForm(forms.Form): 
    def __init__(self,*args,**kwargs): 
     self.site_id = kwargs.pop('site_id') 
     super(StylesForm,self).__init__(*args,**kwargs) 

    height = forms.CharField(widget=forms.TextInput(attrs={'size':site_id})) 

उत्तर

22

आप ऐसे ही अपने फार्म की __init__ विधि परिभाषित करना चाहिए,:

class StylesForm(forms.Form): 
    def __init__(self,*args,**kwargs): 
     self.site_id = kwargs.pop('site_id') 
     super(StylesForm,self).__init__(*args,**kwargs) 
बेशक आप जब तक self.site_id उपयोग नहीं कर सकते की

ऑब्जेक्ट बनाया गया है, इसलिए लाइन:

 height = forms.CharField(widget=forms.TextInput(attrs={'size':site_id})) 

कोई मतलब नहीं है। फॉर्म बनने के बाद आपको विजेट में विशेषता जोड़नी होगी। कुछ इस तरह का प्रयास करें:

class StylesForm(forms.Form): 
    def __init__(self,*args,**kwargs): 
     self.site_id = kwargs.pop('site_id') 
     super(StylesForm,self).__init__(*args,**kwargs) 
     self.fields['height'].widget = forms.TextInput(attrs={'size':site_id}) 

    height = forms.CharField() 

(परीक्षण नहीं)

+0

मैं कैसे रूप में site_id उपयोग करते हैं? मैंने self.site_id और site_id की कोशिश की है। यह मुझे एक त्रुटि देता है। मैंने ब्रेकपॉइंट्स का इस्तेमाल किया, और ऐसा लगता है कि यह मेरे सभी फील्ड परिभाषाओं (जहां मुझे साइट_आईडी का उपयोग करने की आवश्यकता है) से गुज़रने से पहले गुजरता है, हालांकि _init_ – user984003

+1

फ़ील्ड तक पहुंचने के लिए self.site_id का उपयोग करें। __init__ विधि को किसी भी अन्य विधि से पहले बुलाया जाता है, इसे दोबारा जांचें। –

+0

मुझे "नाम 'स्वयं' परिभाषित नहीं किया गया है" – user984003

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