Миграции не создаются, ошибка dependencies references nonexistent parent node

20 апреля 2015 г. 0:02

Иногда у меня не создаются миграции. Обычно нужно сделать так: для того чтобы создавались миграции, в нужном приложении необходимо создать папку migrations (и положить туда __init__.py). И не забыть прописать приложение в settings.py. И тогда при вызове команды python manage.py makemigrations создадутся миграции.

Но что делать, когда возникает ошибка dependencies references nonexistent parent node? Подробнее на примере.

У меня возникла эта ошибка, когда я поставил taggit (приложение, позволяющее прикручивать теги к объектам) и по-инерции прописал в settings.py следующее:

MIGRATION_MODULES = {
    'cms': 'cms.migrations_django',
    'menus': 'menus.migrations_django',
    'djangocms_text_ckeditor': 'djangocms_text_ckeditor.migrations_django',
    'taggit': 'taggit.south_migrations',
}

Как написано в документации Django по миграциям: "запишите в MIGRATION_MODULES названия приложений, которые используют не дефолтную папку migrations для хранения Django миграций (версии 1.7 и выше), и название папки, куда буду складываться миграции".

Мельком посмотрел в документации taggit, что тоже используют MIGRATION_MODULES. После вызова команды python manage.py migrate всё работало как надо до тех пор, пока мои миграции не стали зависимы от миграции taggit 0001_initial.py.

Тут-то и вывалилась ошибка dependencies references nonexistent parent node. Оказывается, у меня вообще Django не использовал taggit миграции, а просто создал таблицы в БД (как приложение без миграций) и соответственно не было записи в таблице django_migrations о том, что применилась миграция 0001_initial.py приложения taggit.

Как выяснилось, проблема в том, что не надо было добавлять строчку 'taggit': 'taggit.south_migrations' в MIGRATION_MODULES, так как это была папка с миграциями старой Django (версии ниже, чем 1.7) приложения south. Потом ещё и обратил внимание на то, что в названии 'taggit.south_migrations' стоит ключевое слово south :)

Поэтому будьте внимательны: в MIGRATION_MODULES прописывается путь до миграций django 1.7 и выше.

И напоследок скажу: миграции сильно облегчают жизнь - дружите с ними :)

Оцените статью

0 из 5 (всего 0 оценок)

Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

Автор статьи

Права на использование материала, расположенного на этой странице http://vivazzi.ru/it/dependencies-references-nonexistent-parent-node/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="http://vivazzi.ru/it/dependencies-references-nonexistent-parent-node/">http://vivazzi.ru/it/dependencies-references-nonexistent-parent-node/</a>

Подробнее: Правила использования сайта

Комментариев: 0

Вы можете оставить комментарий как незарегистрированный пользователь. Но, зарегистрировавшись, вы сможете получать оповещения об ответах, а также иметь доступ к своему личному аккаунту для просмотра своих комментариев.

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте