如何修改Django Admin中用户列表的显示字段?(Django 2.0)
解决Django 2.0中修改Admin用户视图字段不生效的问题
我之前也碰到过一模一样的情况,直接修改UserAdmin的类属性有时候会因为Django的加载顺序或者内部缓存机制不生效,尤其是在Django2.0这个版本里。试试下面这个更稳妥的方法:
正确实现方式:继承UserAdmin自定义子类
别直接修改原生的UserAdmin,而是创建它的子类,在子类里重写list_display,再把这个子类绑定到User模型上注册。代码如下:
from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User # 自定义用户管理类,继承自原生UserAdmin class CustomUserAdmin(UserAdmin): # 在这里定义你想要显示的字段 list_display = ['email', 'first_name', 'last_name', 'is_active', 'last_login'] # 先取消默认的User模型注册 admin.site.unregister(User) # 注册自定义的管理类 admin.site.register(User, CustomUserAdmin)
为什么原代码不生效?
Django启动时会先注册默认的UserAdmin,如果你的代码只是直接修改UserAdmin.list_display,可能修改操作在默认注册之后才执行,导致Django没识别到更新后的配置。通过继承的方式,我们明确告诉Django要用我们自定义的管理类,就不会有这个问题了。
额外注意事项
- 修改完代码后一定要重启Django开发服务器,Admin的配置变更需要重启才能生效。
- 如果你的项目里其他地方也用到了
UserAdmin,这种继承方式不会影响它们的使用,比直接修改原生类更安全。
内容的提问来源于stack exchange,提问作者Hugo Alain Oliva
相关产品推荐
相关产品推荐

