supprimez ce nom d'application des applications installées settings.py, puis supprimez tout lien vers cette application du fichier principal urls.py. Ensuite, vous pouvez supprimer cette application en toute sécurité
Aseem
Si vous êtes dans le développement en utilisant SQLite et vous ne me dérange pas réinitialiser la base de données, est - il correct de simplement supprimer le dossier de l' application et db.sqlite3, et retirez- INSTALLED_APPSen settings.py?
Kevin
Réponses:
150
Django <1.7 a une commande de gestion pratique qui vous donnera le SQL nécessaire pour supprimer toutes les tables d'une application. Consultez la documentation sqlclear pour plus d'informations. Fondamentalement, l'exécution ./manage.py sqlclear my_app_namevous permet d'obtenir les instructions SQL qui doivent être exécutées pour éliminer toutes les traces de l'application dans votre base de données. Vous devez toujours copier et coller (ou diriger) ces instructions dans votre client SQL. Pour Django 1.7 et plus, utilisez ./manage.py migrate my_app_name zero(voir la documentation de migrate ), qui exécute automatiquement le nettoyage de la base de données.
Pour supprimer l'application de votre projet, il vous suffit de la supprimer de celle de INSTALLED_APPSvotre projet settings.py. Django ne chargera plus l'application.
Si vous ne voulez plus que les fichiers de l'application traînent, supprimez le répertoire de l'application de votre répertoire de projet ou d'un autre emplacement sur votre PYTHONPATH où il réside.
(facultatif) Si l'application stockait des fichiers multimédias, des fichiers de cache ou d'autres fichiers temporaires quelque part, vous souhaiterez peut-être les supprimer également. Méfiez-vous également des données de session persistantes qui pourraient être restées de l'application.
(facultatif) Je supprimerais également tous les types de contenu périmés.
Ainsi.
from django.contrib.contenttypes.models importContentTypefor c inContentType.objects.all():ifnot c.model_class():print"deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
Excellente réponse, juste un ajout que je ferais: pip uninstall nom-package est votre ami, beaucoup plus agréable que de traîner autour de votre PYTHONPATH.
DaveJ
25
Sur Django 1.7, si vous utilisez la migration, l'étape 1 sera ./manage.py migrate my_app_name zero. Et il exécutera également automatiquement le SQL.
Si l'application en cours de suppression comporte des migrations, dont dépendent les migrations d'autres applications, le système de migration tombera en panne lorsqu'il verra que ces migrations dépendantes n'existent plus. Soyez prudent lorsque vous utilisez la réponse ci-dessus si l'application à supprimer est une dépendance dans l'historique de migration d'une autre de vos applications.
Filip Kilibarda
1
Et pour être complet, vous devrez généralement supprimer une référence à include("appname.urls")du projeturls.py
nigel222
16
commenter settings.pydans INSTALLED_APPSla ligne de l'application inutile
supprimer tous les dossiers __pycache__et migrateà votre projet
supprimer le modèle inutile dans models.py
supprimer tous les liens d' importation dans views.py, admin.pyfin, etc.
supprimer tous les liens dans urls.pyvos applications inutiles
dans la base de données, supprimez les tables inutiles associées à l'application (je le fais avec le programme d'aide "Valentina Studio")
supprimer le dossier de l'application
en ligne de commande, faites-le: python manage.py migrateetpython manage.py syncdb
L'application django est un «ensemble» de fichiers * .py et un répertoire avec un nom d'application-django. Ainsi, vous pouvez simplement supprimer tout le dossier avec tous les fichiers * .py
Pour "supprimer" des tables de la base de données, vous devez utiliser DELETE FROM <app-name_table-names>
De plus, vous devez supprimer les lignes avec le nom de l'application de setting.py dans un répertoire racine
En supposant que vous ne partagez pas la base de données avec une autre application, vous pouvez simplement déposer la base de données nommée dans settings.py.
joel3000
chaque application a sa propre base de données - pas mal
V-Light
3
@ V-Light, chaque application a sa propre table et chaque projet a sa propre base de données.
Alireza Savand
3
Dans mon contexte les projets existent plusieurs fois: j'ai un système de développement, certains coéquipiers ont un système de développement, il y a un système de mise en scène pour le client et un système de production. Cela signifie que je ne veux pas exécuter de commandes sql à la main. Je veux que ce soit automatisé.
Objectif: supprimer l'application et toutes les tables de la base de données.
Étape 1: videz l'application, mais laissez-la installée
supprimer tous les fichiers de l'application, sauf le dossier "migrations"
Exécutez cette commande: manage.py makemigrations -n drop_all_tables my_app_to_remove
J'aime vraiment les étapes de cet article - il inclut le support de migration .
Peut-être qu'il doit être adapté dans deux mises à jour de code - mais semble vraiment sécurisé lorsque vous devez travailler avec de nombreux déploiements (comme: phase de test, version BETA et production - dans mon cas)
db.sqlite3
, et retirez-INSTALLED_APPS
ensettings.py
?Réponses:
Django <1.7 a une commande de gestion pratique qui vous donnera le SQL nécessaire pour supprimer toutes les tables d'une application. Consultez la documentation sqlclear pour plus d'informations. Fondamentalement, l'exécution
./manage.py sqlclear my_app_name
vous permet d'obtenir les instructions SQL qui doivent être exécutées pour éliminer toutes les traces de l'application dans votre base de données. Vous devez toujours copier et coller (ou diriger) ces instructions dans votre client SQL. Pour Django 1.7 et plus, utilisez./manage.py migrate my_app_name zero
(voir la documentation de migrate ), qui exécute automatiquement le nettoyage de la base de données.Pour supprimer l'application de votre projet, il vous suffit de la supprimer de celle de
INSTALLED_APPS
votre projetsettings.py
. Django ne chargera plus l'application.Si vous ne voulez plus que les fichiers de l'application traînent, supprimez le répertoire de l'application de votre répertoire de projet ou d'un autre emplacement sur votre PYTHONPATH où il réside.
(facultatif) Si l'application stockait des fichiers multimédias, des fichiers de cache ou d'autres fichiers temporaires quelque part, vous souhaiterez peut-être les supprimer également. Méfiez-vous également des données de session persistantes qui pourraient être restées de l'application.
(facultatif) Je supprimerais également tous les types de contenu périmés.
Ainsi.
la source
./manage.py migrate my_app_name zero
. Et il exécutera également automatiquement le SQL.sqlclear
a été supprimé dans Django 1.9 donc cette réponse n'est valable que pour les versions précédentes. Voir: docs.djangoproject.com/en/1.10/releases/1.9/…include("appname.urls")
du projeturls.py
settings.py
dansINSTALLED_APPS
la ligne de l'application inutile__pycache__
etmigrate
à votre projetmodels.py
views.py
,admin.py
fin, etc.urls.py
vos applications inutilespython manage.py migrate
etpython manage.py syncdb
la source
L'application django est un «ensemble» de fichiers * .py et un répertoire avec un nom d'application-django. Ainsi, vous pouvez simplement supprimer tout le dossier avec tous les fichiers * .py
Pour "supprimer" des tables de la base de données, vous devez utiliser
DELETE FROM <app-name_table-names>
De plus, vous devez supprimer les lignes avec le nom de l'application de setting.py dans un répertoire racine
la source
Dans mon contexte les projets existent plusieurs fois: j'ai un système de développement, certains coéquipiers ont un système de développement, il y a un système de mise en scène pour le client et un système de production. Cela signifie que je ne veux pas exécuter de commandes sql à la main. Je veux que ce soit automatisé.
Objectif: supprimer l'application et toutes les tables de la base de données.
Étape 1: videz l'application, mais laissez-la installée
supprimer tous les fichiers de l'application, sauf le dossier "migrations"
Exécutez cette commande:
manage.py makemigrations -n drop_all_tables my_app_to_remove
Le répertoire ressemble maintenant à ceci:
Laissez
my_app_to_remove
dans le fichier "settings.py".Étape 2: déployer les modifications
Mettez à jour tous les projets. Dites aux coéquipiers de mettre à jour leur projet et d'exécuter les migrations.
Étape 3: supprimez "my_app_to_remove" de settings.py
Supprimez maintenant "my_app_to_remove" de settings.py et déployez à nouveau.
la source
J'aime vraiment les étapes de cet article - il inclut le support de migration .
Peut-être qu'il doit être adapté dans deux mises à jour de code - mais semble vraiment sécurisé lorsque vous devez travailler avec de nombreux déploiements (comme: phase de test, version BETA et production - dans mon cas)
la source