Как чисто и эффективно удалить приложение из django
Я переписал и переименовал все приложение. Теперь оно прошло мои тесты, поэтому пришло время удалить старую версию. К моему удивлению, это либо намного сложнее, чем должно быть, либо я просто не нашел правильного ответа. Где находится 'python manage.py delete app 'appname'? Я посмотрел на это Как удалить запись в моделях Django? и в документации https://docs.djangoproject.com/en/4.0/topics/migrations/#workflow.
Сначала я попробовал просто удалить все приложение из файловой системы, но миграции пожаловались:
File "/home/malikarumi/.virtualenvs/LogBook/lib/python3.9/site-packages/django/db/models/base.py", line 113, in new raise RuntimeError( RuntimeError: Класс модели uppergi.models.Food не объявляет явную метку app_label и не находится в приложении в INSTALLED_APPS. (LogBook) malikarumi@Tetuoan2:~/Projects/LogBook$ python manage.py delete uppergi Неизвестная команда: 'delete' Введите 'manage.py help' для использования. (LogBook) malikarumi@Tetuoan2:~/Projects/LogBook$ manage.py help manage.py: команда не найдена (LogBook) malikarumi@Tetuoan2:~/Projects/LogBook$ git revert 8bb60951
Поэтому я вернул его на место и попробовал удалять по одной модели за раз. Миграции тоже жаловались на это.
(LogBook) malikarumi@Tetuoan2:~/Projects/LogBook$ python manage.py makemigrations Traceback (последний последний вызов): ... Файл "/home/malikarumi/Projects/LogBook/uppergi/admin.py", строка 6, in from . models import Grocer, Food, ShoppingTrip, Cook, Eaten ImportError: cannot import name 'Eaten' from 'uppergi.models' (/home/malikarumi/Projects/LogBook/uppergi/models.py)
.
и указание приложения:
(LogBook) malikarumi@Tetuoan2:~/Projects/LogBook$ python manage.py makemigrations uppergi Traceback (последний последний вызов): Файл "/home/malikarumi/Projects/LogBook/manage.py", строка 25, in ... Файл "/home/malikarumi/Projects/LogBook/uppergi/admin.py", строка 6, in from . models import Grocer, Food, ShoppingTrip, Cook, Eaten ImportError: cannot import name 'Eaten' from 'uppergi.models' (/home/malikarumi/Projects/LogBook/uppergi/models.py)
.
Похоже, что единственный способ сделать это - вручную отменить все действия, которые вы делаете после запуска startapp: перейти к urls, перейти к моделям, перейти к представлениям, перейти к админке и т.д. Это, конечно, возможно, но не очень модульно. Неужели нет способа сделать это тщательно и автоматически с помощью одной команды?
Чтобы избежать проблем с миграцией, я обычно удаляю файлы внутри папок migration и __pycache__, кроме файлов init. Обычно это срабатывает.
Поэтому вы можете продолжить и попробовать удалить эти файлы. Например, я удалил эти файлы, когда у меня была такая же проблема:
Попробуйте запустить миграции снова и посмотрите, работает ли это.