Южный пропуск неработающих миграций

Я использую стороннее приложение внутри своего приложения django, и его более старые версии зависели от модели аутентификации django, но более новая версия поддерживает пользовательскую модель аутентификации django 1.5. Проблема, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю приложение и переношу приложение, оно прерывается при миграции 002, потому что оно ссылается на таблицу, которая не нужна окончательной версии приложения, поэтому у меня ее нет. Если я выключаю юг и просто делаю syncdb, все работает нормально. Но тогда мне придется делать поддельные миграции для всех моих других приложений. Есть ли простой способ, которым я могу либо юг пропустить эти ошибки и продолжить миграцию, либо юг просто использовать models.py для создания схемы, а затем для меня сделать фальшивую миграцию только для этого одного приложения?

Спасибо за вашу помощь :)


person CodeMonkeyB    schedule 15.06.2013    source источник


Ответы (2)


Я закончил тем, что сделал это

SOUTH_MIGRATION_MODULES = { 'app_with_broken_migration':'ignore'}

затем работает syncdb

затем удалите строку игнорирования миграции и запустите

manage.py migrate app_with_broken_migration --fake
person CodeMonkeyB    schedule 23.06.2013

Обычно я вношу временную модификацию в скрипт миграции, который терпит неудачу. Закомментируйте или измените ненужные части, запустите миграцию, а затем восстановите все, как было раньше.

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

person orlenko    schedule 15.06.2013
comment
Проблема в том, что я делаю установку pip для этого пакета. и я использую Heroku на рабочем сайте, который просто устанавливает все на основе файла требований. Это затруднило бы выполнение этого в продакшене... - person CodeMonkeyB; 16.06.2013