Django 1.11如何创建删除数据表的迁移及回退迁移
Django 1.11 删除模型后生成可回退迁移的操作步骤
- 首先确认你已经从
specific_app的models.py中完全删除AB_Testing模型的代码,同时移除所有其他代码中对该模型的依赖,包括其他模型中指向该模型的外键、多对多关联字段。 - 执行迁移生成命令,指定对应应用:
python manage.py makemigrations specific_app
执行后Django会自动检测到模型删除动作,在./apps/specific_app/migrations/目录下生成新的迁移文件(默认命名为0004_remove_ab_testing.py这类格式),Django 1.11 自动生成的删除模型迁移默认自带回退能力,逆操作会基于之前的0003_ab_testing.py中的定义重建对应表结构,不需要额外修改迁移文件内容。
- 应用该迁移到数据库的命令:
python manage.py migrate specific_app
- 如需回退该删除操作,恢复
AB_Testing对应的表结构,执行命令回退到上一个迁移版本即可:
python manage.py migrate specific_app 0003
注意:如果生成的迁移中你手动添加了
RunPython、RunSQL类的自定义数据操作,需要自行补充对应的回滚逻辑,仅自动生成的删除表结构的迁移无需额外配置即可支持回退。不要手动修改已经在生产环境应用过的迁移文件,避免迁移状态混乱。
内容的提问来源于stack exchange,提问作者Павел Иванов
相关产品推荐
相关产品推荐

