#python #django #django-taggit
#python #django #django-taggit
Вопрос:
Я хочу удалить django-taggit из моего проекта, но когда я удалил 'taggit'
приложение из INSTALLED_APPS
, произошла следующая ошибка:
raise NodeNotFoundError(self.error_message, self.key, origin=self.origin)
django.db.migrations.exceptions.NodeNotFoundError: Migration SourceManager.0002_auto_20190218_2112 dependencies reference nonexistent parent node ('taggit', '0002_auto_20150616_2121')
Я думаю, что эта ошибка произошла из-за того, что в django-taggit есть файлы миграции, так как безопасно удалить его из моего проекта?
Комментарии:
1. Я не думаю, что есть простой способ, кроме ручного редактирования старых файлов миграции, чтобы удалить все ссылки на taggit. Если вы сделаете это правильно, это не должно причинить никакого вреда до тех пор, пока вы не вернетесь к какой-либо точке, где вам нужно, чтобы они запускались правильно.
2. Будет ли это плохой новостью.
Ответ №1:
Вы на полпути. В django-taggit есть файлы миграции, и именно поэтому вы столкнулись с ошибкой.
Возможно, вы захотите сбросить состояние базы данных и повторно применить миграции, чтобы избежать этой ошибки.
В этом руководстве подробно объясняется, как сбросить базу данных и повторно применить миграции. Я предлагаю вам следовать процедуре шаг за шагом.
Небольшое предостережение: Даже если вы являетесь пользователем ОС Unix bases, избегайте удаления файлов миграции, выполняя команды, приведенные в руководстве. Команда изменяет файлы Django по умолчанию и создает ненужные проблемы. Лучше удалять файлы миграции по одному и модель за моделью.
Комментарии:
1. Спасибо, но я ищу менее агрессивное решение.
2. Сам этого не делал, но вот еще одно предложение: прежде чем удалять сам taggit, сквошьте свои миграции. Это удалит все ссылки на taggit в сокращенной миграции. Убедитесь, что сжатая миграция применена ко всем имеющимся у вас базам данных. Затем вы можете удалить старые файлы миграции. И удалите taggit. Смотрите здесь подробные инструкции.
3. @adnanmuttaleb: Боюсь, но для этого есть не менее агрессивное решение. Если вы хотите удалить зависимость, которая присутствует при миграции, вам придется выполнить действия вручную. В любом случае, это не так агрессивно, если вы знаете, что делаете.