Як мігрувати назад від початкової міграції в Django 1.7?


117

Я створив новий додаток з деякими моделями, і тепер я помітив, що деякі з моделей погано продумані. Оскільки я не вчинив код, розумним було б перенести базу даних до останнього хорошого стану та повторити міграцію з кращими моделями. У цьому випадку останнім хорошим станом є база даних, де нової програми не існує.

Як можна мігрувати назад від початкової міграції в Django 1.7?

У Southодному можна було зробити:

python manage.py migrate <app> zero

Що було б зрозуміло <app>з історії міграції та випало з усіх таблиць <app>.

Як це зробити при міграції Django 1.7?

Відповіді:


197

Ви можете зробити те ж саме і з Django 1.7+:

python manage.py migrate <app> zero

Це очищається <app>від історії міграції та видаляє всі таблиці<app>

Докладніші відомості див. У документах про джанго .


7
Це десь задокументовано? Документації на
джанго

2
Документацію можна знайти на сторінці документації django-admin та management.py: docs.djangoproject.com/en/1.7/ref/django-admin/…
n__o

@ні, дякую. Оновлена ​​відповідь.
ChillarAnand

1
Як би ви попрацювали з IntegrityError: НЕ NULL обмеження не вдалося?
wasabigeek

2
Просто спробував це на Django 1.9, і він добре працював. Спасибі
Dário

9

Ви також можете використовувати номер версії:

python manage.py migrate <app> 0002

Джерело: https://docs.djangoproject.com/en/1.7/ref/django-admin/#django-admin-migrate


5
Поставлене запитання стосується міграції назад від початкової міграції, а використання 0000не працює
guival

Я бачу, я, можливо, неправильно зрозумів питання (хоча це не особливо добре написане ІМХО). чому б ти просто не скинув БД? ой добре
jsh

2
випадання цілого БД на одну таблицю трохи
непосильне
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.