Django迁移后将现有模型组织为包的方法及对历史迁移的影响
模型拆分为包结构的操作说明
能否直接执行操作
不能仅做模型文件移动就结束,需要补充必要配置才能保证项目正常运行,完整操作步骤如下:
- 首先在对应app下新建
models文件夹(即Python包),文件夹内需新增空的__init__.py文件标识为包 - 将原
models.py中的模型按分类拆分到models包下的不同文件中,比如account.py、order.py等 - 必须在
models/__init__.py中导入所有拆分后的模型类,示例如下:from .account import User, UserProfile from .order import Order, OrderItem
对已有迁移文件的影响
- 只要配置正确,不会对已有迁移文件产生任何负面影响,原有迁移可以正常使用。Django的迁移逻辑是通过
app名.模型类名匹配模型的,和模型代码所在的具体文件路径无关,只要模型类名、所属app、db_table配置没有变更,就不会触发新的迁移生成 - 如果未在
__init__.py中导入模型,Django会判定对应模型被删除,执行makemigrations时会生成删除对应数据表的迁移,此时不要执行migrate操作,补全__init__.py的导入即可恢复正常 - 额外提示:拆分操作完成后可以执行
python manage.py makemigrations验证,输出No changes detected即说明操作完全正确
内容的提问来源于stack exchange,提问作者Vit Amin
相关产品推荐
相关产品推荐

