Bagaimana cara bermigrasi kembali dari migrasi awal di Django 1.7?

117

Saya membuat aplikasi baru dengan beberapa model dan sekarang saya perhatikan bahwa beberapa model tidak dipikirkan dengan baik. Karena saya belum memasukkan kode, hal yang masuk akal adalah memigrasi database ke kondisi baik terakhir dan mengulangi migrasi dengan model yang lebih baik. Dalam hal ini, status baik terakhir adalah database di mana aplikasi baru tidak ada.

Bagaimana saya dapat bermigrasi kembali dari migrasi awal di Django 1.7?

Dalam Southsatu hal bisa dilakukan:

python manage.py migrate <app> zero

Yang akan menghapus <app>riwayat migrasi dan menghapus semua tabel <app>.

Bagaimana melakukan ini dengan migrasi Django 1.7?

Seppo Erviälä
sumber

Jawaban:

197

Anda dapat melakukan hal yang sama dengan Django 1.7+ juga:

python manage.py migrate <app> zero

Ini menghapus <app>dari riwayat migrasi dan menghapus semua tabel<app>

Lihat dokumen django untuk info lebih lanjut.

ChillarAnand
sumber
7
Apakah ini didokumentasikan di mana saja? Dokumentasi django tentang migrasi sangat kurang ...
rnevius
2
Doc dapat ditemukan di halaman dokumentasi django-admin dan manage.py: docs.djangoproject.com/en/1.7/ref/django-admin/…
n__o
@tidak, terima kasih. Jawaban yang diperbarui.
ChillarAnand
1
Bagaimana Anda menangani IntegrityError: NOT NULL kendala gagal?
wasabigeek
2
Baru saja mencoba ini pada Django 1.9 dan bekerja dengan baik juga. Terima kasih
Dário
9

Anda juga dapat menggunakan nomor versi:

python manage.py migrate <app> 0002

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

jsh
sumber
5
Pertanyaan yang diajukan adalah tentang bermigrasi kembali dari migrasi awal , dan menggunakan 0000tidak berfungsi
guival
Begitu, saya mungkin telah salah paham dengan pertanyaan itu (meskipun IMHO tidak ditulis dengan sangat baik). mengapa Anda tidak menjatuhkan DB saja? oh baiklah
jsh
2
menjatuhkan seluruh DB untuk satu meja agak berlebihan
guival