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

自定义AuthUser模型后访问Django Admin及创建超级用户报错

解决Django自定义用户模型后表不存在的问题

问题重现

使用DRF AuthToken实现Token认证,自定义了AuthUser模型,执行makemigrations和migrate后,访问/admin或执行createsuperuser时出现错误:

django.db.utils.ProgrammingError: (1146, "Table 'roadmap.tutor_authuser' doesn't exist")

解决方案

1. 确认settings.py中已配置自定义用户模型

必须在项目配置中指定自定义用户模型,否则Django仍会使用默认的auth.User:

# settings.py
AUTH_USER_MODEL = 'tutor.AuthUser'

注意:这个配置必须在第一次执行migrate前设置,如果之前已经迁移过默认用户表,需要按步骤3处理。

2. 验证迁移是否实际应用

运行以下命令查看迁移状态:

python manage.py showmigrations

检查tutor应用下的迁移是否带有[X]标记,表示已应用。如果没有,重新执行迁移:

python manage.py migrate tutor

如果还是没生效,尝试重新生成迁移文件:

python manage.py makemigrations tutor
python manage.py migrate tutor

3. 清理数据库重新迁移(适用于之前创建过默认用户表的情况)

如果在设置AUTH_USER_MODEL之前已经执行过migrate,会导致默认用户表和自定义用户表冲突,需要彻底清理:

  • 删除项目根目录下的数据库文件(如db.sqlite3,如果是MySQL/PostgreSQL则清空对应数据库)
  • 删除所有应用下migrations文件夹中的迁移文件(保留__init__.py)
  • 删除migrations文件夹下的__pycache__目录
  • 重新执行:
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

4. 检查迁移文件的正确性

查看tutor应用的迁移文件,确认AuthUser的创建语句正确。可以通过以下命令查看生成的SQL:

python manage.py sqlmigrate tutor 0001_initial

确认输出中包含创建tutor_authuser表的语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:48:17