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

Django创建自定义邮箱登录用户模型时提示users.CustomUser未安装如何解决

问题原因

两个核心错误导致启动失败:

  1. 你在settings.py中配置了AUTH_USER_MODEL = 'users.CustomUser',但INSTALLED_APPS列表中未注册users应用,且你提供的CustomUser模型实际写在main应用的models.py中,配置的应用名和模型实际所属应用不匹配。
  2. CustomUser类中USERNAME_FIELD赋值错误,需要传入字段名的字符串格式,不能直接引用字段变量。

修复步骤

步骤1:修正应用注册与AUTH_USER_MODEL配置

二选一即可,根据你的项目规划选择:

  • 方案1:CustomUser放在现有main应用下
    直接修改settings.py的AUTH_USER_MODEL配置:
    AUTH_USER_MODEL = 'main.CustomUser'
    
  • 方案2:单独用users应用存放用户模型
    • 执行命令创建users应用:python manage.py startapp users
    • 把main/models.py中的CustomUser、CustomUserManager代码移动到users/models.py中
    • 在INSTALLED_APPS列表中新增'users',修改后示例:
    INSTALLED_APPS = [
        'rest_framework',
        'main',
        'users', # 新增此行
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    

步骤2:修正CustomUser类配置

找到CustomUser类,修改USERNAME_FIELD的赋值为字符串格式:

class CustomUser(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    USERNAME_FIELD = 'email' # 加引号,传入字段名字符串
    REQUIRED_FIELDS = []
    objects = CustomUserManager()

步骤3:执行数据库迁移

如果此前未执行过auth相关迁移,直接运行以下命令即可:

python manage.py makemigrations
python manage.py migrate

如果已经执行过旧的auth迁移,需要先清空数据库,删除所有应用migrations目录下除__init__.py之外的文件,再执行上述迁移命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:57:04