Come tornare indietro dalla migrazione iniziale in Django 1.7?


117

Ho creato una nuova app con alcuni modelli e ora ho notato che alcuni modelli sono mal pensati. Dato che non ho eseguito il commit del codice, la cosa sensata sarebbe migrare il database affinché duri in buono stato e rifare la migrazione con modelli migliori. In questo caso l'ultimo stato buono è il database in cui la nuova app non esiste.

Come posso tornare indietro dalla migrazione iniziale in Django 1.7?

In Southuno si potrebbe fare:

python manage.py migrate <app> zero

Ciò cancellerebbe <app>dalla cronologia della migrazione e eliminerebbe tutte le tabelle di<app> .

Come farlo con le migrazioni Django 1.7?

Risposte:


197

Puoi fare lo stesso con Django 1.7+ anche:

python manage.py migrate <app> zero

Questo cancella <app>dalla cronologia della migrazione e elimina tutte le tabelle di<app>

Consulta la documentazione di django per maggiori informazioni.


7
È documentato da qualche parte? La documentazione django sulle migrazioni è gravemente carente ...
rnevius

2
Doc può essere trovato nella pagina della documentazione django-admin e manage.py: docs.djangoproject.com/en/1.7/ref/django-admin/…
n__o

@No grazie. Risposta aggiornata.
ChillarAnand

1
Come gestireste il vincolo IntegrityError: NOT NULL non riuscito?
wasabigeek

2
Ho appena provato questo su Django 1.9 e ha funzionato bene. Grazie
Dário

9

puoi anche usare il numero di versione:

python manage.py migrate <app> 0002

Fonte: https://docs.djangoproject.com/en/1.7/ref/django-admin/#django-admin-migrate


5
La domanda posta riguarda la migrazione di ritorno dalla migrazione iniziale e l'utilizzo 0000non funziona
Guival

vedo, potrei aver frainteso la domanda (anche se non è scritta particolarmente bene IMHO). perché non dovresti semplicemente eliminare il DB? vabbè
jsh

2
far cadere l'intero DB per un tavolo è un po 'eccessivo
guival il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.