使用Django自定义AbstractUser模型后,db.sqlite3中无法查看该模型
Django自定义用户模型没在SQLite数据库显示的解决办法
先查这些关键点
- 迁移是否真的生效了
执行python manage.py showmigrations,查看base应用下的迁移项是否都标有[X]。如果没生成迁移文件,先删除base/migrations目录下除__init__.py外的所有文件,再重新执行python manage.py makemigrations base,必须看到检测到CustomUser模型变化的提示才算正常。 - AUTH_USER_MODEL配置是否正确
确认settings.py里的AUTH_USER_MODEL = 'base.CustomUser'拼写完全准确:base是你的应用名,CustomUser是模型类名,且该应用已添加到INSTALLED_APPS中,不能有任何拼写错误。 - 是不是找错数据库文件了
迁移完成后,确保你打开的db.sqlite3是项目根目录下的最新文件,不要误打开旧版本或其他位置的同名文件。实在不确定就删除旧数据库文件,重新执行python manage.py migrate从头生成。 - 模型定义有没有问题
保证CustomUser正确继承自AbstractUser,示例代码如下:from django.contrib.auth.models import AbstractUser from django.db import models class CustomUser(AbstractUser): # 自定义字段示例,比如手机号 phone = models.CharField(max_length=11, blank=True) class Meta: db_table = 'custom_user' # 可选,指定表名方便在数据库中查找 - 用SQLite命令行直接验证最准确
在终端执行sqlite3 db.sqlite3打开数据库,输入.tables命令列出所有表,查找base_customuser(默认表名格式:应用名_模型名)或你指定的custom_user表。
容易踩的坑
- 如果是中途修改
AUTH_USER_MODEL,之前已经生成过原生auth_user表,必须清空所有迁移文件和数据库,重新初始化,否则Django会一直保留对旧表的引用。 - 使用第三方数据库查看工具时,记得刷新连接或重启工具,否则可能无法显示新生成的表。
内容的提问来源于stack exchange,提问作者lidor
相关产品推荐
相关产品推荐

