Django: Как полностью удалить приложение Django?

Какова процедура полной деинсталляции приложения Django с удалением базы данных?

Ответ 1

  1. Джанго & lt; 1.7 имеет удобную команду управления, которая даст вам необходимый SQL, чтобы отбросить все таблицы для приложения. См. документы sqlclear для получения дополнительной информации. По сути, запуск ./manage.py sqlclear my_app_name позволяет получить операторы SQL, которые должны быть выполнены, чтобы избавиться от всех следов приложения в вашей БД. Вам все еще нужно скопировать и вставить (или передать) эти операторы в ваш клиент SQL. Для Django 1.7 и выше используйте ./manage.py migrate my_app_name zero (см. документы миграции), который автоматически запускает очистку базы данных.

  2. Чтобы удалить приложение из вашего проекта, все, что вам нужно сделать, это удалить его из INSTALLED_APPS в вашем проекте settings.py. Django больше не будет загружать приложение.

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

  4. (необязательно) Если приложение где-то хранит мультимедийные файлы, файлы кэша или другие временные файлы, вы можете также удалить их. Также будьте осторожны с длительными данными сеанса, которые могут остаться в приложении.

  5. (необязательно) Я бы также удалил все устаревшие типы контента.

Вот так.

from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
    if not c.model_class():
        print "deleting %s"%c
        c.delete()

Ответ 2

  • комментарий settings.py в INSTALLED_APPS ненужной строке приложения
  • удалите всю папку __pycache__ и migrate в вашем проекте
  • удалить ненужную модель в models.py
  • удалить все ссылки импорта в views.py, admin.py конец и т.д.
  • удалите всю ссылку в urls.py на ненужном приложении
  • в базе данных удалить ненужные таблицы, связанные с приложением (я делаю это с помощью программы "Valentina Studio" ).
  • удалить папку приложения
  • в командной строке выполните следующие действия: python manage.py migrate и python manage.py syncdb

Ответ 3

django app - это "набор" файлов *.py и каталог с именем django-app. Таким образом, вы можете просто удалить всю папку со всеми *.py файлами

Чтобы "удалить" таблицы из БД, вы должны использовать DELETE FROM <app-name_table-names>

Кроме того, вы должны удалить строки witgh app-name из файла settings.py в корневом каталоге

Ответ 4

Мне очень нравятся шаги из этой статьи - это поддержка миграции.

Может быть, его нужно адаптировать в двух обновлениях кода - но выглядит действительно безопасным, когда вам приходится работать со многими развертываниями (такими как: этап тестирования, бета-версия и производство - в моем случае)

Ответ 5

В моем контексте проекты существуют несколько раз: у меня есть система разработки, у некоторых товарищей по команде есть система разработки, есть система подготовки для заказчика и производственная система. Это означает, что я не хочу выполнять команды sql вручную. Я хочу, чтобы это было автоматизировано.

Цель: удалить приложение и все таблицы базы данных.

Шаг 1. Очистите приложение, но оставьте его установленным

удалить все файлы из приложения, кроме папки "Миграция"

Выполните эту команду: manage.py makemigrations -n drop_all_tables my_app_to_remove

Каталог теперь выглядит так:

my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py

Оставьте my_app_to_remove в файле "settings.py".

Шаг 2. Развертывание изменений

Обновите все проекты. Скажите товарищам по команде обновить свой проект и запустить миграцию.

Шаг 3: удалите "my_app_to_remove" из settings.py

Теперь удалите "my_app_to_remove" из settings.py и разверните снова.