Wie kann ich von der ursprünglichen Migration in Django 1.7 zurück migrieren?

116

Ich habe eine neue App mit einigen Modellen erstellt und jetzt festgestellt, dass einige der Modelle schlecht durchdacht sind. Da ich den Code nicht festgeschrieben habe, wäre es sinnvoll, die Datenbank auf den letzten guten Zustand zu migrieren und die Migration mit besseren Modellen zu wiederholen. In diesem Fall ist der letzte gute Zustand die Datenbank, in der die neue App nicht vorhanden ist.

Wie kann ich von der ersten Migration in Django 1.7 zurück migrieren?

In Southeinem könnte man tun:

python manage.py migrate <app> zero

Welches würde <app>aus dem Migrationsverlauf löschen und alle Tabellen von löschen <app>.

Wie geht das mit Django 1.7-Migrationen?

Seppo Erviälä
quelle

Antworten:

195

Sie können dasselbe mit Django 1.7+ auch tun:

python manage.py migrate <app> zero

Dadurch wird der <app>Migrationsverlauf gelöscht und alle Tabellen von gelöscht<app>

Weitere Informationen finden Sie in den Django-Dokumenten .

ChillarAnand
quelle
7
Ist das irgendwo dokumentiert? Die Django-Dokumentation über Migrationen fehlt stark ...
Rnevius
2
Doc finden Sie auf der Dokumentationsseite von django-admin und manage.py: docs.djangoproject.com/de/1.7/ref/django-admin/…
n__o
@Nein Danke. Antwort aktualisiert.
ChillarAnand
1
Wie würden Sie mit IntegrityError umgehen: NOT NULL-Einschränkung fehlgeschlagen?
Wasabigeek
2
Ich habe es gerade mit Django 1.9 versucht und es hat auch gut funktioniert. Danke
Dário
10

Sie können auch die Versionsnummer verwenden:

python manage.py migrate <app> 0002

Quelle: https://docs.djangoproject.com/de/1.7/ref/django-admin/#django-admin-migrate

jsh
quelle
4
Die gestellte Frage bezieht sich auf die Rückmigration von der ursprünglichen Migration, und die Verwendung 0000funktioniert nicht
Guival
Ich verstehe, ich habe die Frage möglicherweise falsch verstanden (obwohl sie meiner Meinung nach nicht besonders gut geschrieben ist). Warum würden Sie die DB nicht einfach fallen lassen? oh well
jsh
1
Das Löschen der gesamten DB für einen Tisch ist etwas übertrieben
Guival