Django.contrib.auth.admin中的UserAdmin():用户管理与权限设置
发布时间:2023-12-25 04:18:41
Django中的django.contrib.auth.admin模块提供了一个名为UserAdmin的类,该类用于管理用户以及设置用户的权限。UserAdmin类继承自django.contrib.auth.admin.UserAdmin类,因此它包括了所有用户管理界面默认提供的功能,并且还可以方便地进行自定义扩展。
UserAdmin类的使用非常简单,下面我们将介绍一些常见的功能和使用例子。
1. 添加UserAdmin类到admin.py文件:
在你的Django项目的admin.py文件中,导入UserAdmin类,并在admin.site.register中注册该类。
from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User admin.site.unregister(User) admin.site.register(User, UserAdmin)
2. 修改用户列表视图的显示字段:
你可以通过重写UserAdmin类中的list_display属性,来自定义用户列表视图中显示的字段。
class CustomUserAdmin(UserAdmin):
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
3. 自定义用户详情视图:
UserAdmin类提供了一个名为fieldsets的属性,用于自定义用户详情视图中的字段以及字段分组。
class CustomUserAdmin(UserAdmin):
fieldsets = (
(None, {'fields': ('username', 'password')}),
('Personal info', {'fields': ('first_name', 'last_name', 'email')}),
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
)
4. 过滤用户列表:
可以使用list_filter属性在用户列表视图上添加过滤器。
class CustomUserAdmin(UserAdmin):
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
5. 搜索用户:
使用search_fields属性可以在用户列表视图上添加搜索框。
class CustomUserAdmin(UserAdmin):
search_fields = ('username', 'email', 'first_name', 'last_name')
6. 关联模型:
如果你有一个关联到用户模型的其他模型,可以使用inline属性在用户详情页面显示该关联模型。
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from django.contrib import admin
class ProfileInline(admin.StackedInline):
model = Profile
can_delete = False
verbose_name_plural = 'Profile'
class CustomUserAdmin(UserAdmin):
inlines = (ProfileInline,)
这只是UserAdmin类的一些常见用例,你可以根据你的需求进行更复杂的自定义。希望以上的例子可以帮助你更好地使用django.contrib.auth.admin.UserAdmin类进行用户管理和权限设置。
