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

Django.contrib.auth.admin中的UserAdmin():用户列表的排序与分页

发布时间:2023-12-25 04:21:21

Django.contrib.auth.admin中的UserAdmin()提供了用户列表的排序和分页功能,可以帮助开发人员更好地管理和展示用户数据。

在使用UserAdmin()进行用户列表排序和分页之前,需要先导入UserAdmin类和User模型:

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

然后,我们可以在admin.py中创建一个自定义的UserAdmin类,并继承自UserAdmin类:

class CustomUserAdmin(UserAdmin):
    ordering = ('id',)  # 按照id字段排序
    list_display = ('username', 'email', 'is_active')  # 列表显示的字段
    list_filter = ('is_active',)  # 过滤器
    search_fields = ('username', 'email')  # 搜索字段
    list_per_page = 10  # 每页显示的记录数

可以看到,我们可以通过设置一些属性来自定义用户列表的排序和分页:

- ordering属性:指定按照哪个字段进行排序,可以是一个字段或多个字段,例如按照id字段排序:ordering = ('id',)

- list_display属性:指定在列表中显示哪些字段,可以是一个字段或多个字段,例如显示用户名、邮箱和是否活跃字段:list_display = ('username', 'email', 'is_active')

- list_filter属性:指定在列表中显示哪些过滤器,可以是一个字段或多个字段,例如显示是否活跃的过滤器:list_filter = ('is_active',)

- search_fields属性:指定在列表中可以使用哪些字段进行搜索,可以是一个字段或多个字段,例如使用用户名和邮箱进行搜索:search_fields = ('username', 'email')

- list_per_page属性:指定每页显示的记录数,例如每页显示10条记录:list_per_page = 10

接下来,需要在admin.site.register()函数中将自定义的UserAdmin类和User模型进行关联:

admin.site.register(User, CustomUserAdmin)

最后,我们就可以在用户管理页面中看到自定义的排序和分页效果了。

使用例子:

假设我们有一个User模型,包含字段id、username、email和is_active,现在我们想按照id字段进行排序,并且在用户列表中同时显示用户名、邮箱和是否活跃字段,使用是否活跃字段进行过滤,使用用户名和邮箱字段进行搜索,每页显示10条记录。

首先,我们在admin.py中导入UserAdmin类和User模型:

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

然后,创建一个自定义的UserAdmin类,并继承自UserAdmin类:

class CustomUserAdmin(UserAdmin):
    ordering = ('id',)  
    list_display = ('username', 'email', 'is_active') 
    list_filter = ('is_active',)  
    search_fields = ('username', 'email')  
    list_per_page = 10  

接下来,在admin.site.register()函数中将自定义的UserAdmin类和User模型进行关联:

admin.site.register(User, CustomUserAdmin)

最后,启动Django服务器,在用户管理页面中就能看到按照id字段排序,并且显示用户名、邮箱和是否活跃字段的用户列表。可以通过过滤器和搜索字段来筛选和搜索用户数据,并且每页显示10条记录。