4 étapes simples pour renommer une application existante dans un projet Django sans douleur ni perte de données.
Étape 1
Renommez le dossier de l'application. Pour cet exemple, "old_app" est notre ancien nom et "new_app" est notre nouveau nom".
mv ./old_app ./new_app
Étape 2
Mettez à jour toutes les importations faisant référence à l'ancien dossier pour faire référence au nouveau.
Par exemple :
# Before
from myproject.old_app import models
# After
from myproject.new_app import models
Étape 3
Mettez à jour les anciennes références de noms d'applications dans le Migrations Django .
Exemples de changements que vous devrez probablement effectuer :
# Before
dependencies = [
('old_app', '0023_auto_20200403_1050'),
]
# After
dependencies = [
('new_app', '0023_auto_20200403_1050'),
]
# Before
field = models.ForeignKey(
default=None, on_delete=django.db.models.deletion.CASCADE,
to='old_app.Experiment'
)
# After
field = models.ForeignKey(
default=None, on_delete=django.db.models.deletion.CASCADE,
to='new_app.Experiment'
)
Étape 4
Faites un engagement à ce stade.
Ensuite, quelle que soit la façon dont vous exécutez vos migrations d'applications dans un environnement déployé, exécutez django_rename_app avant d'exécuter vos migrations dans ce processus.
c'est-à-dire avant "python manage.py migrate --noinput", comme le montre l'exemple ci-dessous.
# Before
python manage.py collectstatic --noinput
python manage.py migrate --noinput
gunicorn my_project.wsgi:application
# After
python manage.py collectstatic --noinput
python manage.py rename_app old_app new_app
python manage.py migrate --noinput
gunicorn my_project.wsgi:application
Cela mettra à jour le nom de l'application dans les tables internes suivantes de la base de données Django :
- django_content_type
- django_migrations
Et renommez le préfixe de toutes vos tables pour qu'il commence par le nom de votre nouvelle application, plutôt que par l'ancien.
C'est tout.
Note : Il est préférable d'utiliser l'éditeur de texte de votre IDE. trouver et remplacer pour effectuer des modifications dans les différents fichiers.
0 votes
Salut danihp. Oui, je l'ai fait. J'utilise également virtualenv, je ne sais pas si cela a quelque chose à voir.
1 votes
Si, par hasard, vous utilisez PyCharm, son
rename
vous sera d'une grande aide.1 votes
Le Sud ne soutient-il pas une telle opération ?
0 votes
@andi stackoverflow.com/questions/4566978/
0 votes
pip install django-rename-app
puispython manage.py rename_app <old_app_name> <new_app_name>
, github.com/odwyersoftware/django-rename-app