¡Primero, expondré lo que intento lograr en caso de que haya una manera diferente de hacerlo!Edición de ambos lados de M2M en la página de administración
Quiero poder editar ambos lados de una relación M2M (preferiblemente en la página de administración aunque, si es necesario, podría estar en una página normal) usando cualquiera de las interfaces de selección múltiple.
El problema obviamente viene con el reverso, ya que el lado principal (donde se define la relación) funciona muy bien automágicamente.
He intentado algunos de los consejos aquí para obtener un inline para aparecer y eso funciona, pero no es una interfaz muy agradable.
El consejo que recibí en la lista de correo de django fue usar un Modelo de formulario personalizado. He llegado a mostrar un cuadro de selección múltiple, pero parece que no está "conectado" a nada, ya que no comienza con nada seleccionado y no guarda los cambios realizados.
aquí está el fragmentos apropiados de código:
#models.py
class Tag(models.Model):
name = models.CharField(max_length=200)
class Project(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
tags = models.ManyToManyField(Tag, related_name='projects')
#admin.py
class TagForm(ModelForm):
fields = ('name', 'projects')
projects = ModelMultipleChoiceField(Project.objects.all(), widget=SelectMultiple())
class Meta:
model = Tag
class TagAdmin(admin.ModelAdmin):
fields = ('name', 'projects')
form = TagForm
Cualquier ayuda sería muy apreciada, ya sea con el código anterior para trabajar o proporcionando una mejor manera de hacerlo!
DavidM
¡Guau, gente amable aquí, 11 minutos y 2 votos! – DavidM