У меня есть пользовательская модель пользователя, которая имеет подкласс 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 User
остается формой по умолчанию, т.е. присутствуют только поля username
, password
и password confirmation
.Поле role
не отображается.