Jak wrócić z pierwotnej migracji w Django 1.7?

117

Stworzyłem nową aplikację z niektórymi modelami i teraz zauważyłem, że niektóre modele są słabo przemyślane. Ponieważ nie zatwierdziłem kodu, rozsądną rzeczą byłaby migracja bazy danych do dobrego stanu i powtórzenie migracji z lepszymi modelami. W tym przypadku ostatnim dobrym stanem jest baza danych, w której nie ma nowej aplikacji.

Jak mogę wrócić z pierwotnej migracji w Django 1.7?

W Southjednym można zrobić:

python manage.py migrate <app> zero

Co spowodowałoby usunięcie <app>z historii migracji i usunięcie wszystkich tabel <app>.

Jak to zrobić z migracjami Django 1.7?

Seppo Erviälä
źródło

Odpowiedzi:

197

Możesz zrobić to samo z Django 1.7+ również:

python manage.py migrate <app> zero

Spowoduje to wyczyszczenie <app>historii migracji i usunięcie wszystkich tabel<app>

Zobacz dokumentację django, aby uzyskać więcej informacji.

ChillarAnand
źródło
7
Czy jest to gdzieś udokumentowane? Bardzo brakuje dokumentacji django na temat migracji ...
rnevius
2
Dokument można znaleźć na stronie dokumentacji django-admin i manage.py: docs.djangoproject.com/en/1.7/ref/django-admin/ ...
n__o
@Nie, dziękuję. Zaktualizowana odpowiedź.
ChillarAnand
1
Jak poradzisz sobie z IntegrityError: NOT NULL nie powiodło się?
wasabigeek
2
Właśnie wypróbowałem to na Django 1.9 i również działało dobrze. Dzięki
Dário
9

możesz również użyć numeru wersji:

python manage.py migrate <app> 0002

Źródło: https://docs.djangoproject.com/en/1.7/ref/django-admin/#django-admin-migrate

jsh
źródło
5
0000
Zadane
Rozumiem, mogłem źle zrozumieć pytanie (chociaż nie jest to szczególnie dobrze napisane IMHO). dlaczego po prostu nie upuścisz DB? no cóż
jsh
2
upuszczenie całego DB na jeden stół to trochę przesada
guival