【发布时间】:2019-06-17 21:50:36
【问题描述】:
我正在浏览 django for beginners book,测试第 8 章中关于 Custom user model 的代码。目标是通过继承 AbstractUser 模型在 auth 用户模型中添加字段 age。
首先我们在models.py中创建CustomUser
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
age = models.PositiveIntegerField(null=True, blank=True)
然后在forms.py中创建CustomUserCreationFrom和CustomUserChangeFrom:
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
最后,admin.py 中的 CustomUserAdmin:
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)
当然还有告诉 django 我们在 settings.py 中的自定义身份验证模型:
AUTH_USER_MODEL = 'users.CustomUser'
作为超级用户登录,尝试添加新用户时,创建表单中没有age字段。
我错过了什么吗?
【问题讨论】:
-
您是否尝试在管理员的 list_display 中添加您的字段“年龄”?
-
@NitinPawar 是的,在
CustomUserAdmin(UserAdmin 的子类)中,我在 list_display 中添加了年龄 -
哦,是的。忽略了它。
标签: python django django-admin django-custom-user