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 规则可能存在一定风险,若有人发现问题,希望能在评论中列出,感谢