Я изучаю книгу django для начинающих , тестирую код из главы 8 о пользовательской модели .Цель состоит в том, чтобы добавить поле age
в модели аутентификации пользователя путем создания подкласса модели AbstractUser
.
Сначала мы создаем CustomUser
в models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
age = models.PositiveIntegerField(null=True, blank=True)
Затемсоздание CustomUserCreationFrom
и CustomUserChangeFrom
в forms.py
:
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationFrom(UserCreationForm):
class Meta(UserCreationForm.Meta):
model = CustomUser
fields = UserCreationForm.Meta.fields + ('age',)
class CustomUserChangeFrom(UserChangeForm):
class Meta(UserChangeForm.Meta):
model = CustomUser
fields = UserChangeForm.Meta.fields
И, наконец, CustomUserAdmin
в admin.py
:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationFrom, CustomUserChangeFrom
from .models import CustomUser
class CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationFrom
form = CustomUserChangeFrom
model = CustomUser
list_display = ['username', 'email', 'age', 'is_staff',]
admin.site.register(CustomUser, CustomUserAdmin)
И, конечно, рассказывая Джанго о нашихПользовательская модель аутентификации в settings.py
:
AUTH_USER_MODEL = 'users.CustomUser'
Зарегистрирована как суперпользователь, и при попытке добавить нового пользователя в форме создания нет поля age
.
Я что-то упустил?