Frage

Ich habe mein Modell aktualisiert, fügte jedoch ein BooleanField es, wenn ich python manage.py syncdb tun, ist es nicht das neue Feld für das Modell zur Datenbank hinzufügen. Wie kann ich dieses Problem beheben?

War es hilfreich?

Lösung

Von Django 1.7 ab

Django hat für Migrationen in Unterstützung gebaut - einen Blick auf der Dokumentation nehmen .

Für Django 1.6 und früher

Django unterstützt keine Migration aus der Box. Es gibt eine steckbare App für Django, die genau das tut aber, und es funktioniert super. Es heißt Süd .

Andere Tipps

Django momentan dies nicht automatisch. Ihre Optionen sind:

  1. die Tabelle aus der Datenbank löscht, es dann in neuer Form mit syncdb neu erstellen.
  2. Drucken aus SQL für die Datenbank python manage.py sql (appname) verwenden, die zusätzliche Leitung für den Bereich finden und fügen Sie es manuell alter table SQL-Befehl. (Dies wird auch ermöglicht es Ihnen Werte des Feldes für die aktuelle Datensätze zu wählen.)
  3. Verwenden Sie Süd (pro Dominic Antwort ).

Gehen Sie folgendermaßen vor:

  1. Ihre Daten an einer Halterung mit dem DumpData Verwaltungsbefehl
  2. Löschen Sie die Tabelle
  3. Ausführen syncdb
  4. Laden Sie Ihre Daten aus der Halterung mit der Loaddata Management Befehl

Wie in oben Antwort vorgeschlagen, habe ich versucht, Süd verwenden, und nach einer Stunde der Frustration mit obskurer Migrationsfehler mit Django-Evolution statt.

Ich denke, es ist einfacher, als mit Süden zu beginnen, und es funktionierte perfekt das erste Mal, dass ich ./manage.py evolve --hint --execute getippt, also bin ich zufrieden.

Havent django in einer Weile benutzt, aber ich glaube, dass syncdb zu erinnern, nicht durchführt alte Befehle zu db Tabellen. Sie müssen die Tabelle dann wieder fallen laufen und es wird wieder erstellen.

edit:. Leider nicht verändert ausführen

In django 1.6

  • Zuerst haben wir laufen - python manage.py sql <app name>

  • Dann müssen wir laufen - python manage.py syncdb

Wenn Sie Django mit Apache und MySQL laufen, starten Sie Apache nach der Migration machen mit makemigrations .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top