我的问题是我已经创建了CustomUserManager,并且覆盖了create_user和create_superuser函数。 问题在于,当我从管理页面创建新用户时,其中的任何功能都不会被调用。
如果我从控制台创建超级用户,请使用以下命令
python manage.py createsuperuser
从我的CustomUserManager中调用create_superuser函数。
我创建了一个从AbstractUser继承的CustomUser。 我已经创建了一个CustomUserManager,它继承自BaseUserManager。
这是CustomUserManager类
# managers.py
class CustomUserManager(BaseUserManager):
"""
Custom user model manager where email is the unique identifiers
for authentication instead of usernames.
"""
def create_user(self, email, password, **extra_fields):
# Stuff
def create_superuser(self, email, password, **extra_fields):
# Stuff
这是CustomUser,它将对象设置为CustomUserManager
# models.py
class CustomUser(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name']
objects = CustomUserManager()
def __str__(self):
return self.email
我的CustomUser也有两种形式,用于编辑或创建新用户。
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = CustomUser
fields = ('email',)
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = CustomUser
fields = ('email',)
最后,我创建了一个CustomUserAdmin类,在其中设置了add_form,表单和用于工作的模型。
# admin.py
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
change_password_form = AdminPasswordChangeForm
# stuff