'ManyToManyField' Objekt hat kein Attribut 'm2m_reverse_field_name'

8

Ich versuche eine Migration für mein Django-Projekt auszuführen, aber ich erhalte den Fehler:

%Vor%

Ich habe bei der Ausführung von Migrationen für alle meine Apps keine Fehler erhalten. Es ist nur, wenn ich versuche, tatsächlich zu migrieren. Ich kann anhand der Rückverfolgungsinformationen nicht erkennen, welches Modell das Problem verursacht oder welche App. Ich habe mir meine Modelle angeschaut, und ich sehe nichts, was mir entgegenkommt.

Hier ist der Stack-Trace:

%Vor%

Wie finde ich heraus, welches Modell das Problem ist? Nach was soll ich suchen?

    
jejy2343 09.01.2016, 20:57
quelle

5 Antworten

6

Sie müssen sicherstellen, dass das Modell, das Sie erstellen, das 'ManyToManyField' bereits in der Datenbank erstellt wurde.

Sie können dies tun, indem Sie die Migration, bei der das Modell erstellt wird, als Abhängigkeit der Migration hinzufügen, in der Sie das Feld ändern:

Szenario 1: Sie ändern das Feld auf "ManyToManyField" mit einem Modell aus einer anderen App

%Vor%

Szenario 2: Sie erstellen ein "ManyToManyField" und das Modell, auf das Sie sich beziehen, befindet sich in derselben Datei:

%Vor%     
jsep 27.04.2017 13:45
quelle
4

Ich stieß auf das gleiche Problem, aber ich weiß nicht, ob aus denselben Gründen. Zum Glück habe ich keine wichtigen Daten im System, also habe ich die Migration wie folgt geändert - aber beachte, dass dadurch alle Daten in diesen Spalten gelöscht werden!

Vorher:

%Vor%

Nachher: ​​

%Vor%

Während die Änderung aus mysteriösen Gründen fehlschlug, funktionierte das Entfernen und erneute Erstellen der Felder.

    
Denis Drescher 08.06.2016 11:27
quelle
2

Einer der Gründe dafür könnte sein, dass Ihre api.Person Modellmigrationen möglicherweise nicht vor der referenzierten Version ausgeführt wurden (in Ihrem Beispiel ist dies file_manager.0006_auto_20160109_1536 ). Stellen Sie daher sicher, dass api.Person migrations zuvor ausgeführt wurden, indem Sie sie in die Abhängigkeiten von file_manager.0006_auto_20160109_1536 einfügen.

    
Sagar 21.09.2016 14:04
quelle
0

Ich hatte das gleiche Problem, als ich versuchte, eine Tabelle umzubenennen, auf die mit vielen bis vielen Feldern verwiesen wurde. Ich habe es so gelöst: - die vielen Beziehungsdaten in eine Datei ausgelagert haben - Entfernte das Feld manytomany und migrierte - Die Tabelle umbenannt und migriert - Das Feld manytomany wurde hinzugefügt und die Beziehungen aus dem Speicherauszug migriert und geladen

    
max 23.10.2016 06:40
quelle
0

Ich hatte auch das gleiche Problem, aber die Art, wie ich es behoben habe, ist die folgenden Schritte: Anmerkung: Sie verlieren Daten von diesem ManyToManyField

%Vor%

Vergessen Sie nicht den --fake

Danach. Ich habe das ManyToMany-Feld entfernt (oder nur die Zeile kommentiert) und dann makemigrations app_name, migriere app_name.

Bei diesem Schritt haben Sie diese Spalte aus Ihrer Datenbank gelöscht, was Sie jetzt tun müssen, ist das ManyToManyField neu hinzuzufügen, also wenn Sie makemigrations app_name & amp; migriere app_name erneut. Ihr Server kann perfekt laufen

Es ist nicht das Beste, aber es hat für mich funktioniert. hoffe es wird helfen!

    
Lemayzeur 02.10.2017 17:09
quelle