Wagtail CMS:如何按最后登录时间排序用户
Wagtail 5.x 后台用户列表按最后登录时间排序的实现方案
要在Wagtail 5.x后台的「设置>用户」页面实现按最后登录时间排序,最佳方案是通过自定义ModelAdmin覆盖默认的用户管理配置,具体步骤如下:
1. 创建自定义UserAdmin类
在项目的任意应用(如users)下新建/修改admin.py,继承Wagtail的用户管理逻辑并扩展排序支持:
from wagtail.users.views.users import UserEditView, UserCreateView from wagtail.users.widgets import UserProfileForm from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register from django.contrib.auth import get_user_model # 获取系统用户模型(兼容自定义User模型场景) User = get_user_model() class CustomUserAdmin(ModelAdmin): model = User # 保持和默认用户管理一致的菜单配置 menu_label = '用户' menu_icon = 'user' menu_order = 900 add_to_settings_menu = True exclude_from_explorer = True # 列表显示字段,新增last_login便于查看排序依据 list_display = ('username', 'full_name', 'email', 'is_active', 'last_login') # 默认按最后登录时间降序排序(负号表示降序) ordering = ('-last_login',) # 复用Wagtail默认的用户编辑/创建视图,保留原有功能 edit_view_class = UserEditView create_view_class = UserCreateView form_class = UserProfileForm # 注册自定义UserAdmin,替换默认配置 modeladmin_register(CustomUserAdmin)
2. 调整应用加载顺序
在项目settings.py的INSTALLED_APPS中,将包含上述代码的应用放在wagtail.users之后,确保自定义配置优先加载:
INSTALLED_APPS = [ # ... 其他应用 'wagtail.contrib.modeladmin', 'wagtail.users', 'users', # 你的自定义应用,放在wagtail.users之后 # ... ]
3. 验证效果
启动服务后进入后台「设置>用户」页面,即可看到:
- 列表新增「最后登录时间」字段
- 默认按该字段降序排列(最新登录的用户在前)
- 点击字段表头可切换升降序排序
如果不需要显示「最后登录时间」字段,仅需支持排序,可移除list_display中的last_login,保留ordering配置即可。
内容的提问来源于stack exchange,提问作者Andre
相关产品推荐
相关产品推荐

