Django - syncdb erstellt keine Tabellen

8

Ich habe ein vorhandenes Modell um ein Viele-zu-Viele-Feld erweitert und erwartet, dass syncdb eine neue Tabelle erstellt, aber da ist nichts. So sieht das Modell aus:

%Vor%

Das Ausführen von sql myapp gibt die korrekten Anweisungen mit der neuen Tabelle aus, aber dies wird nicht angezeigt, wenn ich syncdb ausführen. validate gibt auch keine Fehler zurück. Weiß jemand, was hier los sein könnte? Oder eine bessere Diagnose?

    
Rob 24.12.2012, 01:18
quelle

2 Antworten

15

Der Befehl syncdb erstellt nicht viele bis viele Tabellen für vorhandene Modelle nach Entwurf. Diese Entscheidung wird auf Ticket 2229 erläutert.

Das gibt Ihnen ein paar Optionen.

  • Wenn in Ihrem Buchmodell keine Daten vorhanden sind, löschen Sie die Tabelle und führen Sie syndb erneut aus. Django wird den Büchertisch und den vielen zu vielen Tisch neu erstellen.
  • Verwenden Sie den Befehl dbshell, und erstellen Sie mithilfe der Ausgabe von sql myapp.
  • die Join-Liste für viele bis viele
  • Wenn Sie mit Django mehrere Schemamigrationen durchführen, können Sie mit Süden Freundschaft schließen.
Alasdair 24.12.2012, 01:28
quelle
5

Ich fand diese Erklärung in den django Dokumenten nützlich: SchemaEvolution .

Der De-facto-Standard für die Datenbankmigration ist Django South.

Es ist nicht perfekt, aber es funktioniert ziemlich gut. Sie sollten Ihre Migrationsdatei immer überprüfen (und ggf. bearbeiten), bevor Sie sie ausführen, um sicherzustellen, dass sie tatsächlich das tut, was sie tun soll. Sie können das Lernprogramm hier lesen.

Auch, wenn Sie ausführen:

%Vor%

Sie können schnell herausfinden, ob Ihre Datenbankstruktur zu Ihren Django-Modellen passt.

    
edu222 24.12.2012 02:46
quelle

Tags und Links