Django-South DataMigration - Приложение доступно в forwards (), но не в обратном направлении ()? - PullRequest
6 голосов
/ 02 марта 2012

Я пишу миграцию django на юг, которая зависит от модели в другом приложении, поэтому я включил --freeze OTHERAPPNAME при запуске python manage.py datamigration …

Однако в функции forwards() я могу получить доступ к другой модели в порядке (с orm['otherappname.MyModelName']), однако на шаге backwards() (который также зависит от модели в otherappname), если я пытаюсь получить доступ к orm['otherappname.MyModelName'] Я получаю ошибку

*** KeyError: "The model 'mymodelname' from the app 'otherappname' is not available in this migration."

Я вижу детали замороженной модели внизу файла. Почему я не могу получить к нему доступ?

NB. Эта модель создана в другой миграции внутри другого имени, от которой зависит эта миграция данных.

1 Ответ

10 голосов
/ 02 марта 2012

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

Мораль: заморозьте модели, которые вам понадобятся при миграции данных, в схеме миграции, которая ее обрабатывает.

...