Удаление Джанго-Тинимце.Ошибка импорта при внесении изменений - PullRequest
0 голосов
/ 11 июля 2019

Спасибо, что нашли время, чтобы прочитать это.

Я не был доволен расширением TinyMCE в django и решил переключиться на django-summernote. Я впервые побежал

pip uninstall django-tinymce

Убраны все упоминания о tinymce в реальном проекте.

Следовал инструкции по установке django-summernote. По завершении я решил запустить

python manage.py makemigrations
python manage.py migrate

, чтобы применить новое расширение, но получите ошибку:

File "/Users/rasulkireev/Sites/dj-pw/now/migrations/0006_auto_20190703_0134.py", line 4, in <module>
    import tinymce.models
ModuleNotFoundError: No module named 'tinymce'

Я не уверен, почему Django заботится о том, что я делал ранее, так как я просто прошу заменить редактор. Я тоже не могу запустить python manage.py runserver.

Я ничего не могу сделать, прежде чем это исправить. Прошу вас, ребята, пожалуйста, помогите.

Примечание. В идеале я бы хотел сохранить содержимое моей текущей базы данных.

Спасибо, что нашли время прочитать это.

1 Ответ

0 голосов
/ 11 июля 2019

После того, как вы удалили все упоминания о tinymce из моделей, администраторов и других файлов, вам необходимо выполнить миграцию, используя специальный «флаг»:

python manage.py makemigrations
python manage.py migrate --fake-initial

Я не собираюсь очищать бэкэнд этого метода, но он работает. Вы можете прочитать больше об этом на официальном сайте Django: https://docs.djangoproject.com/en/2.2/topics/migrations/

Это сделает новую начальную миграцию для вашего приложения. Теперь запустите Python manage.py migrate --fake-initial, и Django обнаружит, что у вас есть начальная миграция и что таблицы, которые он хочет создать уже существует и помечает миграцию как уже примененную. (Без перенести --fake-initial flag, команда выдаст ошибку, потому что таблицы, которые он хочет создать, уже существуют.)

Обратите внимание, что это работает только с учетом двух вещей:

  1. Вы не меняли свои модели с тех пор, как создали их таблицы. За миграции на работу, вы должны сначала выполнить начальную миграцию и затем внесите изменения, поскольку Django сравнивает изменения с файлами миграции, а не с базой данных.
  2. Вы не редактировали свою базу данных вручную - Django не сможет обнаружить, что ваша база данных не соответствует вашим моделям, вы просто получите ошибки, когда миграции попытаются изменить эти таблицы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...