Django自定义用户模型创建超级用户报错no such table: user_customuser如何解决?
解决方案
问题根因
你出现这个问题的核心原因是直接执行不带应用名的makemigrations命令时,Django没有识别到user应用下的自定义用户模型变更,所以实际上并没有生成CustomUser对应的迁移文件,执行migrate自然不会创建user_customuser表,后续创建超级用户就会抛出表不存在的错误。
修复步骤
按以下顺序执行操作即可解决:
- 清理所有遗留的无效文件
- 删除项目根目录下的旧数据库文件(默认是
db.sqlite3) - 进入
user应用的migrations目录,删除除__init__.py之外的所有迁移文件,确保没有历史迁移残留 - 其他自定义应用的历史迁移文件也按同样规则清理干净
- 删除项目根目录下的旧数据库文件(默认是
- 单独为user应用生成迁移文件
执行命令:
必须明确指定python manage.py makemigrations useruser应用名,才能让Django强制检测该应用下的模型变更,生成对应的迁移文件 - 执行全量迁移
执行命令:
此时控制台会打印python manage.py migrateuser应用的迁移执行日志,可确认user_customuser表创建成功 - 创建超级用户
执行命令:
按提示输入邮箱、密码即可完成创建python manage.py createsuperuser
额外注意
替换Django默认用户模型的操作必须在项目第一次执行migrate之前完成,如果你已经在生产环境跑过迁移再改自定义用户模型,需要做额外的数据迁移处理,开发环境直接按上面的步骤清理重建即可。
内容的提问来源于stack exchange,提问作者RevTpark
相关产品推荐
相关产品推荐

