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

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

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

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

Обновлять

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

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

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

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

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


person Herman Schaaf    schedule 02.01.2012    source источник


Ответы (1)


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

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

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

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

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

person Herman Schaaf    schedule 02.01.2012