में चेकबॉक्स के रूप में कईToManyField दिखाएं क्या Django Admin में चेकबॉक्स के रूप में ManyToManyField दिखाने का कोई आसान तरीका है ?? कोई सुझाव?Django Admin
उत्तर
this answer से ऐसा लगता है जैसे कि यह CheckBoxSelectMultiple उपयोग करने के लिए उपयोग करने के लिए ModelAdmin.formfield_overrides ManyToManyField ओवरराइड करने के लिए संभव है:
from django.db import models
from django.contrib import admin
from django.forms import CheckboxSelectMultiple
class MyModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.ManyToManyField: {'widget': CheckboxSelectMultiple},
}
मैं इसे करने की कोशिश नहीं की है और केवल स्रोत से उद्धृत कर रहा हूँ, लेकिन यह प्रशंसनीय लगता है। सौभाग्य।
चेतावनी: के रूप में @errx ठीक ही, documentation पर प्रकाश डाला निम्नलिखित चेतावनी ने कहा:
आप एक रिश्ता क्षेत्र के साथ एक कस्टम विजेट उपयोग करना चाहते हैं (यानी
ForeignKey
या ManyToManyField), सुनिश्चित करें कि आप में उस क्षेत्र का नामraw_id_fields
याradio_fields
में शामिल नहीं किया है।
formfield_overrides
नहीं दूँगी तुम संबंध क्षेत्रों हैraw_id_fields
याradio_fields
सेट पर विजेट बदल । ऐसा इसलिए है क्योंकिraw_id_fields
औरradio_fields
अपने स्वयं के कस्टम विजेट्स को इंगित करता है।
django दस्तावेज़ों से एक चेतावनी है। यदि आप एक रिलेशनशिप फ़ील्ड (यानी विदेशीकी या कई टोमनीफिल्ड) के साथ कस्टम विजेट का उपयोग करना चाहते हैं, तो सुनिश्चित करें कि आपने उस फ़ील्ड का नाम raw_id_fields या radio_fields में शामिल नहीं किया है। formfield_overrides आपको raw_id_fields या radio_fields सेट वाले संबंध फ़ील्ड पर विजेट बदलने नहीं देंगे। ऐसा इसलिए है क्योंकि raw_id_fields और radio_fields स्वयं के कस्टम विजेट का संकेत देते हैं। – errx
सिर के लिए धन्यवाद। उत्तर में चेतावनी रखेगा। –
मुझे लगता है कि ऐसा करने का कोई आसान तरीका नहीं है। आप ModelAdmin कक्षा को ओवरराइड करने का प्रयास कर सकते हैं लेकिन यह एक "सरल" तरीका नहीं है।
लेकिन आप लगभग इसी तरह की सुविधा
यह सबसे निश्चित रूप से संभव है जोड़ने के लिए filter_horizontal या filter_vertical उपयोग कर सकते हैं।
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
if db_field.name == 'your field name':
kwargs['widget'] = form_widgets.CheckboxSelectMultiple()
kwargs['help_text'] = ''
return db_field.formfield(**kwargs)
यह व्यवस्थापक कोड में देख से निकाला गया था: यहाँ कोड है जो आप ModelAdmin
उपवर्ग में जगह कर सकते हैं।
एकल फ़ील्ड में निम्नलिखित के लिए ओवरराइड करने के लिए उपयोगी है:
def get_form(self, request, obj=None, **kwargs):
form = super(VNodeAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['node_type'].widget = forms.CheckboxSelectMultiple()
return form
- 1. django-admin
- 2. django admin
- 3. Django Admin
- 4. Django Admin
- 5. Django Admin
- 6. django admin
- 7. Django Admin
- 8. Django Admin
- 9. Django admin
- 10. Django-Admin
- 11. django admin
- 12. django admin
- 13. django-mutant django-admin
- 14. 'admin' Django 1.4
- 15. Django Admin ड्रॉप डाउन
- 16. Django Admin इंटरफ़ेस
- 17. Django admin list_display newline
- 18. django-admin: कुल
- 19. Django Admin Search Optimization
- 20. Django-Admin: UserProfile
- 21. Django Admin CSS अनुपलब्ध
- 22. Django Admin plural
- 23. Django व्यवस्थापक DoNotExist/admin/
- 24. Django - Admin: list_display TextField
- 25. django/contrib/admin/templates
- 26. django-admin-tools dashboard
- 27. साइट कॉन्फ़िगरेशन django-admin
- 28. Django Admin Fieldsets
- 29. Django Admin -> इनलाइन फ़ील्ड्स
- 30. contrib.staticfiles और Django admin media
मैं स्वीकार किए जाते हैं जवाब बदल रहा है, ताकि आगंतुकों को भ्रमित नहीं करने के लिए सुझाव है। – surfer190