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?

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 .


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.