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

20 апреля 2015 г. 4: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 оценок)

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

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

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

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

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

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

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

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

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

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

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

Попробуйте

Выберите валюту для отображения денежных единиц