我有一个自定义用户模型,它是通过
然而,它并没有像预期的那样起作用。"添加用户"表单仍然是默认的,即只有"用户名"、"密码"和"确认密码"字段。"角色"字段不会出现。
AbstractUser
子类化的,并添加了一个自定义字段。# model.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
ADM = 'admin'
MEMBER = 'member'
ROLE_CH = ((ADM, 'Administrator'), (MEMBER, 'Member'))
role = models.CharField(max_length=20, choices=ROLE_CH, blank=True)
这个模型也在settings.py
中注册为默认的认证模型。
# settings.py
AUTH_USER_MODEL = "main.CustomUser"
然后按照文档,在admin.py
中创建一个自定义表单,该表单扩展了UserCreationForm
,并将其注册到自定义用户。
# admin.py
from django.contrib import admin
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = UserCreationForm.Meta.fields + ('role',)
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
admin.site.register(CustomUser, CustomUserAdmin)
然而,它并没有像预期的那样起作用。"添加用户"表单仍然是默认的,即只有"用户名"、"密码"和"确认密码"字段。"角色"字段不会出现。
add_form
应该用于添加用户,而form
则用于编辑用户。此外,我尝试过更改它,但表单并没有发生变化。 - DemetrisUserAdmin
。请查看更新的答案。您还需要设置add_fieldsets
。 - neverwalkaloneradd_fieldsets
对我不起作用,只设置fieldsets
就行了。之间发生了什么变化吗? - sebUserAdmin
。add_fieldsets
仅适用于UserAdmin
类。 - neverwalkaloner