Existe-t-il un moyen simple d'afficher un ManyToManyField comme des cases à cocher dans Django Admin ?? Aucune suggestion?Afficher un ManyToManyField comme cases à cocher dans Django Admin
Répondre
De this answer il semble qu'il est possible d'utiliser ModelAdmin.formfield_overrides pour remplacer le ManyToManyField utiliser CheckBoxSelectMultiple:
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},
}
Je ne l'ai pas essayé et je suis simplement citer la source, mais il semble plausible. Bonne chance.
Avertissement: comme @errx soutient à juste titre, les documentation met en évidence la mise en garde suivante:
Si vous voulez utiliser un widget personnalisé avec un champ de relation (c.-à-
ForeignKey
ou ManyToManyField), assurez-vous que n'a pas inclus le nom de ce champ dansraw_id_fields
ouradio_fields
.
formfield_overrides
ne vous laissera pas changer le widget sur les champs de relation qui ontraw_id_fields
ouradio_fields
ensemble. C'est parce queraw_id_fields
etradio_fields
impliquent widgets personnalisés de leurs propres.
il y a un avertissement de django docs. Si vous souhaitez utiliser un widget personnalisé avec un champ de relation (par exemple ForeignKey ou ManyToManyField), assurez-vous que vous n'avez pas inclus le nom de ce champ dans raw_id_fields ou radio_fields. Formfield_overrides ne vous laissera pas modifier le widget sur les champs de relation qui ont raw_id_fields ou radio_fields ensemble. C'est parce que raw_id_fields et radio_fields impliquent leurs propres widgets. – errx
Merci pour les heads-up. Placera un avertissement en réponse. –
Je pense qu'il n'y a pas de façon simple de le faire. Vous pouvez essayer de surcharger la classe ModelAdmin mais ce n'est pas un moyen "simple".
Mais vous pouvez utiliser filter_horizontal ou filter_vertical ajouter des fonctionnalités similaires presque
Ceci est certainement possible. Voici le code que vous pouvez placer dans la sous-classe ModelAdmin
:
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)
Cela a été dérivé de la recherche dans le code d'administration.
Pour remplacer un seul champ ce qui suit est utile:
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: AJAX ManyToManyField dans admin
- 2. Django: afficher un ManyToManyField dans un template?
- 3. django afficher le contenu manytomanyfield
- 4. à propos de django ManyToManyField
- 5. Cases à cocher Django multiselect
- 6. django admin action case à cocher n'apparaissant pas dans chaneglist_view
- 7. django afficher le contenu d'un manytomanyfield
- 8. Django - tableau de cases à cocher
- 9. Comment accéder aux deux directions de ManyToManyField dans Django Admin?
- 10. Administrateur Django: ManyToManyField dans list_editable?
- 11. Plusieurs cases à cocher cocher comme dans Gmail
- 12. admin django - ajouter des cases à cocher supplémentaires à utiliser avec la liste déroulante des actions
- 13. post django données de cases à cocher
- 14. ManyToManyFields dans Django Admin
- 15. Afficher dynamiquement les cases à cocher
- 16. Re: Comment afficher les cases à cocher!
- 17. Django ManyToManyField
- 18. ManyToManyField IntegrityError dans Django - pourquoi?
- 19. Django ManyToManyField
- 20. ManyToManyField dans django
- 21. django: comment afficher la liste des cases à cocher pour une relation un-à-plusieurs?
- 22. ManyToManyField Supprimer dans Django
- 23. Django case à cocher afficher le contenu
- 24. Formsets avec cases à cocher
- 25. Sinatra Web Admin (comme Admin Django)
- 26. Chargement des cases à cocher Jquery UI sans afficher les cases à cocher normales en premier
- 27. import csv à ManyToManyField Django
- 28. de forme Validating cases à cocher dans Django
- 29. Django: convertir ManyToManyField à foreignkey
- 30. django admin - export comme csv
Je suggère de changer la réponse acceptée, afin de ne pas confondre les visiteurs. – surfer190