2 回答

TA贡献1876条经验 获得超5个赞
首先,您正在使用自定义用户模型。在您的设置文件中,您是否告诉django使用您的模型而不是默认的auth.models.User?
第二,
您正在create_superuser函数中调用self.create_user。
您是否也覆盖create_user函数?
如果是,请提供实施方案。
更新
您不需要像以前那样更改实现用户管理器的功能。如果您在django.auth.models中查看UserManger的实现。您可以从那里获得灵感,并且避免犯错-例如:创建标准用户时不保存模型,因为您不调用保存方法。
我建议像这样更改您的UserManager:
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, email, password,
**extra_fields):
if not email:
raise ValueError('The given email must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
extra_fields.setdefault('is_active', False)
return self._create_user(email, password, **extra_fields)
def create_superuser(self, email, password, **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('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(email, password, **extra_fields)
添加回答
举报