Je trouve que le models.ManyToManyField
widget par défaut de Django Admin est compliqué à utiliser. C'est l' élément de sélection HTML et si vous avez beaucoup d'objets du modèle «autre», alors il est tout à fait impossible de trouver les «autres» objets que vous voulez associer à «cet» objet. Et si vous avez beaucoup d'objets du modèle «autre», cela semble même ralentir le rendu de la page Admin.
Je suis conscient que je peux créer mon propre widget d'administration personnalisé et l'appliquer à mon choix ManyToManyFields
, mais y en a-t-il des préconstruits que je pourrais utiliser à la place? Dans mes rêves, j'imagine un widget HTML de saisie de texte à saisie semi-automatique. Est-ce même pratique / possible de le faire dans le cadre d'administration de Django?
Merci.
la source
vous pouvez essayer d'utiliser un identifiant brut dans l'administrateur. et la documentation django: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
si vous cherchez quelque chose avec la saisie semi-automatique, vous voudrez peut-être regarder cela comme point de départ http://code.djangoproject.com/wiki/AutoCompleteSolutions
et enfin un exemple en ligne très simpliste:
models.py
admin.py:
la source
Je n'ai pas vraiment joué avec mais j'ai trouvé cette bibliothèque prometteuse référencée ailleurs.
Il semble faire exactement ce que je voulais. Plutôt que de charger la liste entière des objets associés (quel que soit le nombre!) Et de vous présenter un sélecteur pour en sélectionner quelques-uns, comme le
filter_horizontal
fait, il présente une boîte de recherche / filtre et utilise des appels de saisie / saisie automatique pour récupérer les résultats dynamiquement. C'est idéal pour le cas où vous avez peut-être 5000 utilisateurs et que vous souhaitez en choisir 3 ou 4 sans attendre le<option>
téléchargement et le rendu des éléments de 5k .la source
C'est une vieille question, mais je veux ajouter une réponse ici pour les personnes qui trouvent cela comme moi: cette situation est exactement ce à quoi servent les administrateurs en ligne de Django. Plus précisément, j'utilise TabularInlines avec des champs d'id bruts pour les relations plusieurs-à-plusieurs qui ont trop de choix.
https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.TabularInline
la source