从管理员创建新用户时未调用CustomUserManager

时间:2019-08-25 08:26:03

标签: django django-models

我的问题是我已经创建了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

0 个答案:

没有答案