Как использовать Django South со сторонними приложениями, загруженными из яйца? - PullRequest
3 голосов
/ 02 января 2012

Я использую стороннее приложение Django Activity Stream из файла Easy Install / Pip .egg. Это конкретное приложение требует, чтобы таблицы постоянно менялись и обновлялись по мере внесения изменений в остальную часть моего проекта, а также в связи с необходимостью дополнительных потоков на новых моделях.

Если я хочу использовать Юг, чтобы отслеживать и обновлять эти изменения, каковы мои варианты? Является ли единственная возможность скопировать каталог внешнего приложения в каталог моего проекта, что несколько усложняет обслуживание моих различных проектов Django? Я нашел этот связанный вопрос , но это не совсем соответствует случаю, когда вы бежите от egg.

Проще говоря, все, что мне нужно, это чтобы Юг использовал отдельный каталог migrations в моем проекте, который я указал. Можно ли это сделать с Югом?

Обновление

Ну, я думал, что у меня есть ответ, сделав это в settings.py:

SOUTH_MIGRATION_MODULES = {
    'books': 'myproject.app_name.migrations',
}

Но теперь Юг жалуется, что

Модуль миграции, указанный для actstream, 'myproject.app_name.migrations', недействителен; родительский модуль не существует.

Я создал пустую папку для приложения внутри моего проекта вместе с __init__.py, но это не имело значения. Что я делаю не так?

1 Ответ

4 голосов
/ 02 января 2012

Наконец, ответ был сделан в settings.py:

SOUTH_MIGRATION_MODULES = {
    'books': 'myproject.app_name.migrations',
}

Но, поскольку я использовал site.addsitedir(path('apps')) для добавления каталога, где мои приложения находятся в пути к python, я не сталнужна часть myproject.Но, разумеется, как только вы удалите часть myproject, South снова использует версию приложения, установленную на egg.Поэтому я решил просто создать новый каталог в моем проекте с именем migrations (запомните __init__.py) и изменил settings.py следующим образом:

SOUTH_MIGRATION_MODULES = {
    'books': 'myproject.migrations.app_name.migrations',
}

Каталог миграции теперь может сохранять любыемиграции сторонних приложений.

...