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