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?
python
django
django-models
Hellnar
quelle
quelle
Antworten:
Ab Django 1.7
Django hat Unterstützung für Migrationen eingebaut - sehen Sie sich die Dokumentation an .
Für Django 1.6 und früher
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 .
quelle
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 demalter table
SQL-Befehl hinzu. (Auf diese Weise können Sie auch die Werte des Felds für Ihre aktuellen Datensätze auswählen.)quelle
Folge diesen Schritten:
quelle
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.quelle
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.
quelle
alter table
Befehle ausgeführt, sonderncreate table
Befehle.In Django 1.6
Zuerst sind wir gelaufen -
python manage.py sql <app name>
Dann müssen wir rennen -
python manage.py syncdb
quelle
Wenn Sie Django mit Apache und MySQL ausführen, starten Sie Apache neu, nachdem Sie die Migration mit Makemigrations durchgeführt haben .
quelle