Ich habe kürzlich mein Modell aktualisiert und ein BooleanField hinzugefügt. Wenn ich dies jedoch tue python manage.py syncdb, wird das neue Feld nicht zur Datenbank für das Modell hinzugefügt . Wie kann ich das beheben?
Ich habe kürzlich mein Modell aktualisiert und ein BooleanField hinzugefügt. Wenn ich dies jedoch tue python manage.py syncdb, wird das neue Feld nicht zur Datenbank für das Modell hinzugefügt . Wie kann ich das beheben?
Antworten:
Django hat Unterstützung für Migrationen eingebaut - sehen Sie sich die Dokumentation an .
Django unterstützt keine sofort einsatzbereiten Migrationen. Es gibt eine steckbare App für Django, die genau das tut, und sie funktioniert großartig. Es heißt Süden .
Django macht dies derzeit nicht automatisch. Ihre Optionen sind:
python manage.py sql (appname), suchen Sie die hinzugefügte Zeile für das Feld und fügen Sie sie manuell mit dem alter tableSQL-Befehl hinzu. (Auf diese Weise können Sie auch die Werte des Felds für Ihre aktuellen Datensätze auswählen.)Folge diesen Schritten:
Wie in Top-Antwort vorgeschlagen, habe ich versucht , mit Süd , und nach einer Stunde der Frustration mit obskuren Migrationsfehlern entschieden zu gehen mit Django - Evolution statt.
Ich denke, es ist einfacher, damit anzufangen als mit South, und es hat beim ersten Tippen perfekt funktioniert ./manage.py evolve --hint --execute, also bin ich damit zufrieden.
Havent hat Django eine Weile benutzt, aber ich scheine mich zu erinnern, dass syncdb Änderungsbefehle für DB-Tabellen ausführt. Sie müssen die Tabelle löschen und dann erneut ausführen, und sie wird erneut erstellt.
edit: sorry führt KEINE Änderung durch.
alter tableBefehle ausgeführt, sondern create tableBefehle.
In Django 1.6
Zuerst sind wir gelaufen - python manage.py sql <app name>
Dann müssen wir rennen - python manage.py syncdb
Wenn Sie Django mit Apache und MySQL ausführen, starten Sie Apache neu, nachdem Sie die Migration mit Makemigrations durchgeführt haben .