Zuerst lege ich dar, was ich zu erreichen versuche, falls es einen anderen Weg gibt!Bearbeiten von beiden Seiten von M2M in der Admin-Seite
Ich möchte in der Lage sein, beide Seiten einer M2M-Beziehung (vorzugsweise auf der Admin-Seite, obwohl es möglicherweise auf einer normalen Seite sein könnte) mit einer der Multi-Select-Schnittstellen zu bearbeiten.
Das Problem kommt offensichtlich mit der Rückseite, da die Hauptseite (wo die Beziehung definiert ist) funktioniert einfach gut automatisch.
Ich habe einige der Ratschläge hier versucht, um eine Inline zu bekommen und das funktioniert, aber es ist nicht eine sehr nette Schnittstelle.
Der Ratschlag, den ich auf der Django-Mailingliste erhielt, war, eine benutzerdefinierte ModelForm zu verwenden. Ich habe so weit wie eine Multiselect-Box zu erscheinen, aber es scheint nicht zu etwas "verbunden" werden, wie es nicht mit etwas ausgewählt startet und speichert keine Änderungen, die vorgenommen werden.
Hier der entsprechende Code-Schnipsel:
#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
Jede Hilfe sehr geschätzt werden würde, entweder den Code bekommt es oben zu arbeiten oder durch einen besseren Weg, um zu tun!
DavidM
Wow, freundliche Leute hier, 11 Minuten und 2 Stimmen! – DavidM