Encuentro que el models.ManyToManyField
widget predeterminado de Django Admin es complicado de usar. Es el elemento de selección HTML y si tiene muchos Objetos del modelo "otro", entonces no es práctico encontrar los "otros" Objetos que desea asociar con "este" Objeto. Y si tiene muchos objetos del modelo "otro", parece que incluso ralentiza la representación de la página de administración.
Soy consciente de que puedo crear mi propio widget de administración personalizado y aplicarlo a mi ManyToManyFields
como mejor me parezca, pero ¿hay alguno preconstruido que pueda usar en su lugar? En mis sueños, imagino un widget HTML de entrada de texto que se completa automáticamente. ¿Es esto incluso práctico / posible de hacer en el marco de administración de Django?
Gracias.
fuente
podría intentar usar una identificación sin formato en el administrador. y los documentos de django: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields
si está buscando algo con autocompletar, es posible que desee ver esto como un punto de partida http://code.djangoproject.com/wiki/AutoCompleteSolutions
y finalmente un ejemplo en línea muy simplista:
modelos.py
admin.py:
fuente
En realidad, no he jugado con él, pero encontré esta biblioteca de aspecto prometedor referenciada en otro lugar.
Parece hacer exactamente lo que quería. En lugar de cargar la lista completa de objetos relacionados (¡sin importar cuántos hay!) Y presentarle un selector para seleccionar algunos de ellos, al igual que lo
filter_horizontal
hace, presenta un cuadro de búsqueda / filtro y utiliza llamadas de escritura anticipada / autocompletar para recuperar resultados. dinamicamente. Esto es ideal para el caso en el que tiene tal vez 5000 usuarios y desea elegir 3 o 4 de ellos sin esperar<option>
a que se descarguen y procesen 5k elementos.fuente
Esta es una pregunta antigua, pero quiero agregar una respuesta aquí para las personas que encuentran esto como yo: esta situación es exactamente para lo que están los administradores en línea de Django. Específicamente, uso TabularInlines con campos de identificación sin procesar para relaciones de muchos a muchos que tienen demasiadas opciones.
https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.TabularInline
fuente