Django South: как я могу получить доступ к моделям в подпакетах при миграции

Поскольку в нашем приложении много моделей, мы размещаем их в подпакетах пакетов моделей, т. е. Cheddarмодель будет не в models.Cheddar, а в models.cheese.Cheddar.

Кажется, я не могу получить доступ к этим моделям при переносе данных на юг, хотя я создал models/__init__.py в соответствии с этим ответом, содержащим строку from cheese import * .

В моем файле переноса данных строка for cheddar in orm.Cheddar.objects.all(): по-прежнему вызывает следующую ошибку:

AttributeError: The model 'Cheddar' from the app 'core' is not available in this migration. (Did you use orm.ModelName, not orm['app.ModelName']?)

Попытка использовать вместо этого orm['core.models.cheese.Cheddar'] вызывает эту ошибку:

KeyError: "The model 'cheddar' from the app 'core' is not available in this migration."

Кто-нибудь знает, как обойти эту проблему?


person winsmith    schedule 16.10.2013    source источник


Ответы (1)


Оказывается, проблема заключалась в том, что модель Cheddar не была указана в свойстве models экземпляра DataMigration:

class Migration(DataMigration):
    # ...

    models = {
        # ...
    }

Как только я добавил туда правильное определение модели (которое было для меня в предыдущей миграции), миграция данных заработала.

person winsmith    schedule 16.10.2013