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

DRF自定义AbstractBaseUser模型创建超级用户后无法查询问题排查

问题排查与修复

你的问题核心出在UserManager的create_user方法里——实例化用户模型时参数传递错误,导致用户根本没被正确写入数据库。

错误代码位置(managers.py)

原create_user方法中实例化模型的代码存在两处错误:

user = self.model(self, email, username, password, **extra_fields)
  • 不该把self(UserManager实例)传给模型构造函数,模型初始化不需要这个参数
  • 不需要直接传递password字段,因为后续已经通过set_password处理密码,直接传会导致字段赋值混乱

修正后的create_user方法

把实例化模型的代码修改为:

def create_user(self, email, username, password, **extra_fields):
    if email:
        email = self.normalize_email(email)
        self.email_validator(email)
    else:
        raise ValidationError(lz("an email address is required"))
    
    if not username:
        raise ValidationError(lz("a username is required"))
        
    # 修正参数传递:移除多余的self和password,用关键字参数赋值字段
    user = self.model(email=email, username=username, **extra_fields)
    user.set_password(password)
    user.save(using=self._db)
    return user

额外必查项

  1. 确认项目settings.py已配置自定义用户模型:
AUTH_USER_MODEL = '你的应用名.CustomUser'
  1. 执行数据库迁移,确保模型变更生效:
python manage.py makemigrations
python manage.py migrate
  1. 重新创建超级用户:
python manage.py createsuperuser

完成以上操作后,超级用户会正常存入数据库,也能正常登录admin后台。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 08:55:54