欢迎访问宙启技术站
智能推送

Django.contrib.auth.admin中的UserAdmin():自定义用户注册表单

发布时间:2023-12-25 04:20:31

Django.contrib.auth.admin中的UserAdmin()是Django自带的用于管理用户的模型管理器。它提供了一个用户管理界面,让开发者可以轻松地处理用户的注册、更新和删除等操作。UserAdmin()还允许开发者自定义用户注册表单,以便添加额外的字段和验证规则。

下面是一个简单的例子,展示如何使用UserAdmin()来自定义用户注册表单。

假设我们要为用户模型添加一个新的字段"phone",并且需要确保该字段在用户注册时必填且 。首先,我们需要创建一个新的UserAdmin类,并在其中添加phone字段。

from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from django.contrib import admin

class MyUserAdmin(BaseUserAdmin):
    list_display = ('username', 'email', 'phone', 'is_staff')
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        ('Personal info', {'fields': ('email', 'phone')}),
        ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'phone', 'password1', 'password2'),
        }),
    )
    search_fields = ('username', 'email', 'phone')
    ordering = ('username',)

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

在上述代码中,我们自定义了UserAdmin类,并继承自BaseUserAdmin。我们使用list_display属性来指定在用户列表中显示哪些字段,此处我们添加了phone字段。fieldsets属性用于定义在用户详情页面中显示的字段分组,我们添加了一个'Personal info'分组并包含了phone字段。add_fieldsets属性用于定义在用户注册页面中显示哪些字段,我们在此处添加了phone字段。search_fields属性用于指定可以通过哪些字段来搜索用户。ordering属性用于指定用户列表的排序方式。

接下来,我们通过admin.site.unregister(User)取消注册Django自带的User模型管理器,并使用admin.site.register(User, MyUserAdmin)重新注册我们自定义的MyUserAdmin模型管理器。

通过以上操作,我们成功地自定义了用户注册表单,并添加了phone字段。在后台管理界面中,我们可以看到这个新字段,并且可以对其进行搜索和排序等操作。

总结起来,Django.contrib.auth.admin中的UserAdmin()提供了许多灵活的配置选项,以便开发者可以根据自己的需求自定义用户注册表单。通过添加自定义字段和验证规则,我们可以轻松地扩展用户模型,并在后台管理界面中进行相应的管理。