Django South: добавление поля модели после переноса данных

Каждый раз, когда я создаю datamigration с помощью Django South (но пока не запускаю его), а затем создаю schemamigration, добавляя новое поле к модели, которая была задействована в этой миграции, задача manage.py migrate не выполняется на datamigration.

Причина этого в том, что определение класса файла models.py содержит определение нового поля, которое datamigration не распознает.

Есть ли способ предотвратить это?


person Jamie Forrest    schedule 10.05.2012    source источник
comment
Есть способ заставить миграции распознавать новые поля в таблицах.   -  person Radu Gheorghiu    schedule 11.05.2012
comment
Можно ли вручную добавить новое поле (поля) в словари моделей в файле миграции данных?   -  person Jamie Forrest    schedule 11.05.2012
comment
Нет. Есть ряд команд, с помощью которых я выполнял миграцию после первоначальной миграции, поэтому изменения в таблицах распознаются.   -  person Radu Gheorghiu    schedule 11.05.2012
comment
Было бы хорошо узнать, что это такое :)   -  person Jamie Forrest    schedule 11.05.2012
comment
Вот ответ. Надеюсь, это сработает и для вас;)   -  person Radu Gheorghiu    schedule 11.05.2012


Ответы (1)


В South Datamigration вы должны напрямую ссылаться на свои модели. т.е.

from myapp.models import MyModel # <- This is bad in datamigration
MyModel.objects.filter(...)

вы должны использовать объект ORM

orm.MyModel.objects.filter(...) <- This is good.
person Julien Grenier    schedule 11.05.2012
comment
Блестящий ответ. Спасибо! - person Charalambos Paschalides; 15.01.2013