Обратная миграция с Django South
хорошо, так что это кажется очень глупой вещью, чтобы спросить, и я уверен, что я что-то упускаю где-то.
Как вы выполняете обратную миграцию, используя Юг на Django?
Итак, я изменил свои модели, создал миграцию с schemamigration выполнить миграцию с migrate, и теперь я понимаю, что это не совсем то, что я хотел, и я хочу, чтобы это было раньше.
за исключением ручного редактирования таблиц БД и удаления файлов миграции, как я должен идти откат миграции назад? Я нахожу ссылки на обратные миграции с использованием юга через Google, но еще не нашел для него надежного примера кода.
кто может помочь?
3 ответов:
вам нужно выяснить количество миграции перед тот, который вы хотите откатить.
ваше приложение должно иметь каталог миграции, с файлами в нем с именем like
0000_initial.py 0001_added_some_fields.py 0002_added_some_more_fields.py 0003_deleted_some_stuff.pyобычно, когда вы запускаете
./manage.py migrate your_app, Юг выполняет все новые миграции, по порядку. (Он смотрит на таблицы базы данных, чтобы решить, какие из них "новые").однако вы также можете указать любую миграцию по номеру, и South перенесет вашу базу данных, либо вперед, либо назад, чтобы довести его до этого момента. Итак, с приведенными выше примерами файлов, если вы уже мигрировали до 0003, и вы хотели запустить 0003 в обратном порядке (эффективно отменить его), вы бы запустили
./manage.py migrate your_app 0002Юг посмотрит на базу данных, поймет, что она уже запустила 0003, и определит, что она должна выполнить обратную миграцию для 0003, чтобы вернуться к 0002.
на всякий случай кто-то (как я) задавался вопросом, как миграция назад от начального (0001):
django-admin.py migrate some_app zeroвыход:
Running migrations for some_app: - Migrating backwards to zero state. < some_app:0001_initial"ноль" - это особое состояние перед любой миграцией.
Comments