2010-10-18 14 views
8

मैं Django ModelForm के init() विधि में किसी फ़ील्ड के विजेट विशेषताओं को प्रोग्रामेटिक रूप से संशोधित करना चाहता हूं। इस प्रकार, मैंने निम्नलिखितमैं मॉडलफॉर्म की __init __() विधि में विजेट के गुणों को कैसे संशोधित कर सकता हूं?

def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.fields['my_checkbox'].widget_attrs(forms.CheckboxInput(attrs={'onclick':'return false;'})) 

दुर्भाग्यवश, यह काम नहीं करता है। कोई विचार?

उत्तर

16
def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.fields['my_checkbox'].widget.attrs['onclick'] = 'return false;' 
+0

या, बेहतर, 'attrs [ 'onclick'] = 'false'' –

+1

धन्यवाद लौटने। कोई विचार क्या है "widget_attrs" क्या करना है? – Huuuze

+0

@ डेनील, क्या आप उस पर विस्तार कर सकते हैं? – Huuuze

1

बर्नार्ड का जवाब 1.7 और इससे पहले काम करने के लिए उपयोग किया जाता था, लेकिन मैं इसे 1.8 पर काम नहीं कर सका।

हालांकि इस काम करता है:

def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.fields['my_checkbox'].widget = forms.widgets.Checkbox(attrs={'onclick': 'return false;'}) 
0

मैं Django 1.10 पर जेम्स लिन के रूप में एक ही समस्या का सामना करना पड़ा है, लेकिन attrs शब्दकोश को अद्यतन करने के बजाय एक नया विजेट उदाहरण देकर इसकी आसपास मिला है। मेरे मामले में, मैं शब्दकोश में मौजूद विशेषता कुंजी की गारंटी नहीं दे सका। जो काम -

def __init__(self, *args, **kwargs): 
    super(MyForm, self).__init__(*args, **kwargs) 
    self.fields['my_checkbox'].widget.attrs.update({'onclick': 'return false;'}) 
संबंधित मुद्दे

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