You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django执行migrate时无法创建自定义User模型对应的auth_user表

问题原因
  • 核心原因是未在项目配置中声明自定义用户模型替换Django内置默认用户:你没有在settings.py中添加AUTH_USER_MODEL = 'admin_portal.User'配置项,Django会默认使用内置的auth.User模型,内置auth应用、第三方依赖包(如报错中的knox)都会默认查找auth_user表,不会识别你自定义的admin_portal.User模型。
  • 迁移逻辑冲突:你给自定义User模型指定了db_table = 'auth_user',和内置auth应用默认要创建的用户表表名完全一致,又没有配置AUTH_USER_MODEL告诉Django用你自定义的模型替代内置模型,迁移执行时出现表名冲突,你的自定义模型建表逻辑被隐式跳过。你看到admin_portal.0001_initial显示应用成功,只是Django记录了迁移的执行状态,实际auth_user表并未被创建。
解决方法

如果是开发环境、无重要业务数据,推荐按以下步骤重置迁移:

  1. 清空当前数据库中所有已创建的表,或者直接重建数据库
  2. 删除admin_portal/migrations/目录下除了__init__.py之外的所有迁移文件
  3. 打开项目的settings.py,添加配置:
AUTH_USER_MODEL = 'admin_portal.User'
  1. 重新生成自定义用户模型的迁移文件:
    python3 manage.py makemigrations admin_portal
  2. 执行全量迁移:
    python3 manage.py migrate

如果是生产环境不可清空数据,需要手动调整迁移依赖:
修改auth应用的0001_initial迁移文件,添加依赖项指向你admin_portal的初始迁移,让Django优先执行你自定义用户的建表逻辑,跳过内置auth应用的auth_user表创建步骤,该操作风险较高,建议提前备份数据。

内容的提问来源于stack exchange,提问作者azteker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:06:03