django.db.migrations.exceptions.InconsistentMigrationHistory

Django在已存在项目上扩展django提供的User表执行迁移报错

原因

admin的迁移文件依赖settings中指定的 auth_user_model 的迁移文件

目前的解决方案

在避免删除全部表的前提下,先让自己扩展的 User 表不继承 AbstractUser 而是继承 models.Model ,这样可以绕过 admin 依赖文件的迁移报错。

迁移成功, 自己扩展的用户表已被创建, 变更扩展的 User 表的继承为 AbstractUser ,同时在 settings.py 中指定 AUTH_USER_MODEL=<you_app.user>,重新进行迁移, 按照提示提供默认值直至迁移成功。

至此,再手动将原User表的数据复制到新数据表, 复制完成后(保证Token的外键约束变更后自定义的User表中存在对应用户,否则变更user_id外键不会成功)在数据库中手动变更 authtoken_token 表中的 user_id 的外键约束对象

隐患

目前还未遇到,但绕过 Django 规则可能存在一定风险,若有人发现问题,希望能在评论中列出,感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值