Django South — создание начальной миграции для приложения, в котором уже есть заполненные таблицы

Сценарий: у меня есть приложение в моем приложении Django, которое я никогда не помещал под управление South. Я давно запускал syncdb, и модели этого приложения никогда не менялись. Со временем я, очевидно, добавлял данные в эти таблицы.

Теперь я хочу поставить это приложение под управление юга, но поскольку таблицы уже существуют, я могу создать файл миграции, но, естественно, я не могу их выполнить. Я получаю ошибку базы данных для существующих таблиц:

django.db.utils.DatabaseError: (1050, "Table 'ooyala_ooyalaitem' already exists")

Это довольно очевидно для меня. Мне было интересно, есть ли умный способ запустить команду migrate для использования текущих таблиц. Я не хотел сбрасывать данные, удалять таблицы вручную, запускать миграцию и заполнять заново, и я не хотел создавать для этого миграцию данных.

Любые идеи по этому поводу? Это вообще возможно?

Спасибо за ваше время.


person Francisco    schedule 07.12.2012    source источник
comment
Я думаю, что гребаное руководство не очень хорошо документировано по этому вопросу. Объяснение на португальском языке можно получить здесь: django-na-pratica.blogspot.com.br/2011/11/   -  person Josir    schedule 07.12.2012


Ответы (1)


Это описано в руководстве.

Преобразовать приложение для использования South очень просто:

  • Отредактируйте свой settings.py и поместите «юг» в INSTALLED_APPS (при условии, что вы установили его в нужное место)
  • Запустите ./manage.py syncdb, чтобы загрузить таблицу South в базу данных. Обратите внимание, что syncdb теперь выглядит по-другому — South изменяет его.
  • Запустите ./manage.py convert_to_south myapp — South автоматически выполнит вашу первую миграцию и сделает вид, что применяет ее.

Обратите внимание, что вам нужно будет конвертировать, прежде чем вносить какие-либо изменения; South обнаруживает изменения, сравнивая их с замороженным состоянием последней миграции, поэтому он не может обнаружить изменения, произошедшие до того, как вы перешли на использование South.

person and3p    schedule 07.12.2012