You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 04:37:05