在 Django 项目中重命名现有应用的简单 4 个步骤,不会造成任何痛苦或数据丢失。
第 1 步
重命名应用文件夹。在本例中,“old_app”是我们的旧名称,“new_app”是我们的新名称”。
mv ./old_app ./new_app
第 2 步
更新所有引用旧文件夹的导入以引用新文件夹。
例如:
# Before
from myproject.old_app import models
# After
from myproject.new_app import models
第 3 步
更新Django migrations 中的旧应用名称引用。
您可能需要进行的更改示例:
# 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'
)
第 4 步
此时进行提交。
然后,无论您在已部署环境中运行应用程序迁移,在该过程中运行迁移之前运行django_rename_app。
即在“python manage.py migrate --noinput”之前,如下例所示。
# 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
这将更新以下内部 Django 数据库表中的应用名称:
- django_content_type
- django_migrations
重命名所有表格的前缀,以新的应用名称开头,而不是旧的。
就是这样。
注意:最好使用 IDE/文本编辑器的查找和替换功能来更改各种文件。