在Django管理面板中将表单字段添加到自定义用户模型

2024-10-01 00:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在浏览django for beginners book,测试第8章关于Custom user model的代码。目标是通过子类化AbstractUser模型,在auth-user模型中添加字段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和{}:

^{pr2}$

最后,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。在

enter image description here

我错过什么了吗?在


Tags: djangofrompy模型importauthageadmin
1条回答
网友
1楼 · 发布于 2024-10-01 00:34:44

感谢迈克尔·赫尔曼的回答: https://testdriven.io/blog/django-custom-user-model/

CustomUserAdmin中,admin.py中,必须声明一个fieldsets

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser


class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ('email', 'is_staff', 'is_active',)
    list_filter = ('email', 'is_staff', 'is_active',)

    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        ('Permissions', {'fields': ('is_staff', 'is_active')}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2', 'is_staff', 'is_active')}
        ),
    )

    search_fields = ('email',)
    ordering = ('email',)


admin.site.register(CustomUser, CustomUserAdmin)

相关问题 更多 >