Ich finde das Standard- models.ManyToManyField
Widget des Django-Administrators umständlich zu verwenden. Es ist das HTML-Auswahlelement , und wenn Sie viele Objekte des "anderen" Modells haben, ist es ziemlich unpraktisch, die "anderen" Objekte zu finden, die Sie mit "diesem" Objekt verknüpfen möchten. Und wenn Sie viele Objekte des "anderen" Modells haben, scheint dies das Rendern der Admin-Seite sogar zu verlangsamen.
Ich bin mir bewusst, dass ich mein eigenes benutzerdefiniertes Admin-Widget erstellen und es nach Belieben auf mein Widget anwenden kann. Gibt ManyToManyFields
es jedoch vorgefertigte Widgets , die ich stattdessen verwenden könnte? In meinen Träumen stelle ich mir ein HTML-Widget zur automatischen Vervollständigung der Texteingabe vor. Ist dies im Django Admin Framework überhaupt praktikabel / möglich?
Vielen Dank.
quelle
Sie können versuchen, eine unformatierte ID im Administrator zu verwenden. und die Django-Dokumente: http://docs.djangoproject.com/de/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
Wenn Sie nach etwas mit automatischer Vervollständigung suchen, sollten Sie dies als Ausgangspunkt betrachten: http://code.djangoproject.com/wiki/AutoCompleteSolutions
und schließlich ein sehr vereinfachtes Inline-Beispiel:
models.py
admin.py:
quelle
Ich habe noch nicht damit gespielt, aber ich fand diese vielversprechend aussehende Bibliothek, auf die an anderer Stelle verwiesen wird.
Es scheint genau das zu tun, was ich wollte. Anstatt die gesamte Liste verwandter Objekte zu laden (unabhängig davon, wie viele es gibt!) Und Ihnen eine Auswahl zu präsentieren, um einige davon auszuwählen
filter_horizontal
, wird ein Such- / Filterfeld angezeigt und es werden Typeahead- / Autocomplete-Aufrufe verwendet, um Ergebnisse abzurufen dynamisch. Dies ist ideal für den Fall, dass Sie vielleicht 5000 Benutzer haben und 3 oder 4 davon auswählen möchten, ohne auf<option>
das Herunterladen und Rendern von 5.000 Elementen zu warten .quelle
Dies ist eine alte Frage, aber ich möchte hier eine Antwort für Leute hinzufügen, die dies genauso finden wie ich: Diese Situation ist genau das, wofür Django-Inline-Administratoren sind. Insbesondere verwende ich TabularInlines mit unformatierten ID-Feldern für viele-zu-viele-Beziehungen, die zu viele Auswahlmöglichkeiten haben.
https://docs.djangoproject.com/de/2.1/ref/contrib/admin/#django.contrib.admin.TabularInline
quelle