django - 从管理员创建新用户时不调用 CustomUserManager
问题描述
我的问题是我创建了一个 CustomUserManager,并覆盖了 create_user 和 create_superuser 函数。问题是当我从管理页面创建新用户时,不会调用任何这些函数。
如果我从控制台创建超级用户,则使用命令
python manage.py createsuperuser
调用来自我的 CustomUserManager 的函数 create_superuser。
我创建了一个继承自 AbstractUser 的 CustomUser。另外,我创建了一个继承自 BaseUserManager 的 CustomUserManager。
这是 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
解决方案
推荐阅读
- c++ - SMPCIRC - 两个圆圈
- javascript - 如何从基于 javascript 的网站中提取动态数据?
- scala - 如何在 Spark 中聚合值?
- c# - 在其他页面调用单独的类?
- c# - 从数据库授权属性角色
- r - 刮痧
- 带有 Rvest 的元素
- android-studio - 如何使用 hdodenhof:circleimageview (Android studio) 创建一个圆圈
- javascript - 是否可以让 Flow 验证器在 reacts setState 中检查 immutability-helper 更新语法?
- python - 如何访问 Kivy 中小部件的子级?
- javascript - 会话超时计数器