M2M-Field

ManyToManyField-Model-Felder (M2M) sind in Django die Möglichkeit, Tabellen zu modellieren, wo mehrere Einträge auf mehrere andere Einträge von Tabellen zeigen. Möchte man beispielsweise in einer Tabelle Pizzen und in einer anderen Tabelle Pizzen-Belag speichern, so erstellt man in der Pizzen-Tabelle ein ManyToManyField für den Belag. Eine Pizza kann also mehr als einen Belag haben, ein Belag kann aber auch auf mehr als einer Pizza vorkommen. Diese Beziehungen werden in Django über eine transparent zwischengeschaltete Hilfstabelle hergestellt.

Ein seltsames Verhalten zeigt die aktuelle SVN-Version von Django bei ManyToManyField-Feldern auf die eigene Tabelle. Hier führte es bei mir zu mehr als seltsamen Fehlern. Unter Anderem ließen sich keine Werte mehr zuweisen bzw. die zugewiesenen nichtmehr korrekt auslesen, obwohl diese in der Datenbank korrekt abgespeichert wurden.

Als Lösung stellte sich heraus, dass es offenbar für ManyToManyField-Felder auf die selbe Tabelle notwendig ist, "symmetrical=False" als ein Parameter zu übergeben. Anschließend funktionierte es bei mir problemlos.

Tags: Django