Django के रूप विगेट्स विशेषताओं <option>
टैग पर रेंडर किया जाना चाहिए की एक सूची पारित करने के लिए एक तरीका प्रदान:
my_choices = (('one', 'One'), ('two', 'Two'))
class MyForm(forms.Form):
some_field = forms.ChoiceField(choices=my_choices,
widget=forms.Select(attrs={'disabled':'disabled'}))
दुर्भाग्य से, यह आप के लिए काम नहीं करेगा क्योंकि विशेषता लागू किया जाएगा प्रदान किए जाने वाले प्रत्येक विकल्प टैग के लिए। Django के पास स्वचालित रूप से यह जानने का कोई तरीका नहीं है कि कौन सा सक्षम होना चाहिए और जिसे अक्षम किया जाना चाहिए।
आपके मामले में, मैं एक कस्टम विजेट लिखने की सलाह देता हूं। यह करना बहुत आसान है, और आपके पास आवेदन करने के लिए इतना कस्टम तर्क नहीं है। इस पर दस्तावेज़ here हैं। हालांकि संक्षेप में:
- उपवर्ग
forms.Select
, जो डिफ़ॉल्ट रेंडरर
- अपने उपवर्ग में चुनिंदा है,
render(self, name, value, attrs)
विधि को लागू। यह निर्धारित करने के लिए कि value
अक्षम होने की आवश्यकता के रूप में योग्यता प्राप्त करने के लिए अपने कस्टम तर्क का उपयोग करें। यदि आपको उल्लंघन की आवश्यकता है तो django/forms/widgets.py
में render
के बहुत कम कार्यान्वयन पर नज़र डालें।
फिर, अपने कस्टम विजेट का उपयोग करने के लिए अपने प्रपत्र फ़ील्ड निर्धारित:
class MyForm(forms.Form):
some_field = forms.ChoiceField(choices=my_choices,
widget=MyWidget)
स्रोत
2009-03-23 21:16:24
यह एक बहुत ही अच्छा समाधान है, लेकिन उचित विधि विकल्प 'विशेषताओं को बदलने के लिए है 'render_option() साफ हो जाएगा है' 'नहीं प्रस्तुत करना() '(जो पूरे विजेट को प्रस्तुत करता है) – jnns