2008-09-29 5 views
42

व्यवस्थापक इंटरफ़ेस और नए प्रारूपों में विकल्पों को परिभाषित करने में सक्षम होने का शानदार सहायक है। आप इस तरह कोड का उपयोग कर सकते हैं:Django में चेकबॉक्स के रूप में विकल्पों को प्रदर्शित करने का कोई तरीका है?

APPROVAL_CHOICES = (
    ('yes', 'Yes'), 
    ('no', 'No'), 
    ('cancelled', 'Cancelled'), 
) 

client_approved = models.CharField(choices=APPROVAL_CHOICES) 

अपने रूप में ड्रॉप-डाउन बॉक्स बनाने के लिए और उन विकल्पों में से एक का चयन करने के लिए उपयोगकर्ता के लिए मजबूर।

मैं सोच रहा हूं कि विकल्पों के एक सेट को परिभाषित करने का कोई तरीका है जहां चेकबॉक्स का उपयोग करके एकाधिक चुने जा सकते हैं? (यह भी कहने में सक्षम होना अच्छा होगा कि उपयोगकर्ता उनमें से अधिकतम संख्या का चयन कर सकता है।) ऐसा लगता है कि यह एक ऐसी सुविधा है जिसे शायद लागू किया गया है, यह सिर्फ मुझे प्रलेखन में नहीं मिल रहा है।

उत्तर

77

फॉर्म लाइब्रेरी के संदर्भ में, आप MultipleChoiceField फ़ील्ड का उपयोग CheckboxSelectMultiple विजेट के साथ करने के लिए करेंगे। आप विकल्पों की संख्या है जो क्षेत्र के लिए एक सत्यापन विधि लेखन द्वारा किए गए थे मान्य सकता है:

class MyForm(forms.Form): 
    my_field = forms.MultipleChoiceField(choices=SOME_CHOICES, widget=forms.CheckboxSelectMultiple()) 

    def clean_my_field(self): 
     if len(self.cleaned_data['my_field']) > 3: 
      raise forms.ValidationError('Select no more than 3.') 
     return self.cleaned_data['my_field'] 

नियंत्रक ही आवेदन में इस के लिए, आप एक ModelForm और override the form used in the appropriate ModelAdmin अनुकूलित करने के लिए आवश्यकता होगी।

0

@ जॉनी बुचानन ने सही उत्तर दिया।

लेकिन अगर आप एक ModelForm अनुकूलित और ModelAdmin वर्ग के अंदर सही तरीके ovverride के लिए कई मॉडलों के लिए Django व्यवस्थापक में इस की जरूरत है, और आप (मेरे जैसे) कर रहे हैं बहुत आलसी, तो आप इस दृष्टिकोण का उपयोग कर सकते हैं:

http://www.abidibo.net/blog/2013/04/10/convert-select-multiple-widget-checkboxes-django-admin-form/

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

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