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

Django自定义User模型创建超级用户遇TypeError错误求助

解决Django createsuperuser报错:TypeError: UserManager.create_superuser() missing 1 required positional argument: 'username'

问题根源是你继承的AbstractUser自带的UserManager仍依赖username字段,但你已将模型中的username设为None并以email作为登录标识,因此需要自定义用户管理器适配你的模型。

解决方案步骤:

  1. 在User模型文件中添加自定义UserManager,重写create_user和create_superuser方法,移除对username的依赖:
from django.contrib.auth.models import AbstractUser, BaseUserManager
from django.db import models

class UserManager(BaseUserManager):
    def create_user(self, email, password=None, **extra_fields):
        if not email:
            raise ValueError('必须提供邮箱地址')
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)  # Django内置密码加密方法
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password=None, **extra_fields):
        # 强制开启超级用户必备权限
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError('超级用户必须设置 is_staff=True')
        if extra_fields.get('is_superuser') is not True:
            raise ValueError('超级用户必须设置 is_superuser=True')

        return self.create_user(email, password, **extra_fields)

class User(AbstractUser):
    name = models.CharField(max_length=32)
    email = models.CharField(max_length=140, unique=True)
    # 注意:删除自定义的password字段,AbstractUser已自带该字段并处理加密逻辑
    username = None

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    objects = UserManager()  # 绑定自定义用户管理器
  1. 执行数据库迁移命令:
python manage.py makemigrations
python manage.py migrate
  1. 再次运行创建超级用户命令:
python manage.py createsuperuser

此时会提示输入邮箱和密码,即可正常创建超级用户。

关键说明:

  • 不要手动定义password字段:AbstractUser已包含该字段,且通过set_password自动处理密码加密存储,手动定义会破坏加密机制。
  • 自定义管理器是必要操作:默认UserManager逻辑依赖username字段,重写后才能适配以email为唯一标识的用户模型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:34:50