Django Forms - change the render multiple select widget -


मेरे मॉडल में मेरे पास बहुत सारे क्षेत्र हैं

  mentors = models.ManyToManyField (MentorArea, Verbose_name = 'areas', blank = true)  

मेरे फॉर्म में मैं इसे इस रूप में प्रस्तुत करना चाहता हूं:

  1. सूची के साथ ड्रॉप डाउन बॉक्स सभी MentorArea वस्तुओं जो ऑब्जेक्ट से संबद्ध नहीं हुई हैं

  2. उसके बाद एक जोड़ बटन जो एक जावास्क्रिप्ट फ़ंक्शन को कॉल करेगा जो इसे ऑब्जेक्ट में जोड़ देगा।

  3. उसके बाद एक उल सूची में प्रत्येक चयनित MentorArea ऑब्जेक्ट के पास कुल्हाड़ी है जो फिर से एक जावास्क्रिप्ट फ़ंक्शन कॉल करता है जो ऑब्जेक्ट से MentorArea को निकाल देगा।

मुझे पता है कि कैसे एक फ़ील्ड तत्व प्रदान किया जाता है आप एक कस्टम विजेट बनाते हैं और रेंडर फ़ंक्शन को ओवरराइड करते हैं और मैंने इसे ऐड बटन बनाने के लिए किया है।

 Jquery = u '' '& lt; इनपुट वर्ग = "बटन डीईएफ़" टाइप = "बटन" "," एफ़आरएआर "," मूल्य = "जोड़ें" आईडी = "क्षेत्र जोड़ें" / & gt; '' 'आउटपुट = सुपर (एरियाविड्ट, स्वयं) .रेडर (नाम, मान, एटर्स, विकल्प) रिटर्न आउटपुट + मार्क_साफ (jquery)  

हालांकि मुझे नहीं पता कि एक सूची के रूप में नीचे वर्तमान में चयनित लोगों को कैसे सूचीबद्ध किया जाए। क्या कोई मेरी मदद कर सकता है? इसके अलावा सूची को फ़िल्टर करने का सबसे अच्छा तरीका क्या है, जिससे कि यह केवल MentorArea ऑब्जेक्ट्स को दिखाता है जो कि जोड़ा नहीं गया है? वर्तमान में फ़ील्ड के रूप में

  mentors = forms.ModelMultipleChoiceField (queryset = MentorArea.objects.all), विजेट = AreaWidget, आवश्यक = False)  

लेकिन यह सभी दिशानिर्देशों से कोई फर्क नहीं पड़ता, चाहे वे जोड़े गए हों या नहीं।

धन्यवाद

मेरे लिए आप जो कार्यक्षमता वर्णित की है वह बहुत ज्यादा लगता है जैसे ModelAdmin ' filter_horizontal और filter_vertical सेटिंग्स का उपयोग करके आप प्राप्त कर सकते हैं। विजेट वे django.contrib.admin.widgets.filteredSelectMultiple में जीवन प्रदान करते हैं। आपको अपने कोड पर एक नजर रखना चाहिए!


Comments