django syncdb und ein aktualisiertes Modell
-
05-07-2019 - |
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?
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:
- die Tabelle aus der Datenbank löscht, es dann in neuer Form mit syncdb neu erstellen.
- 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 manuellalter table
SQL-Befehl. (Dies wird auch ermöglicht es Ihnen Werte des Feldes für die aktuelle Datensätze zu wählen.) - Verwenden Sie Süd (pro Dominic Antwort ).
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 .