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

继承AbstractUser后如何在Django管理面板启用管理员改密码功能?

恢复Django Admin中自定义User模型的密码修改功能

当你继承AbstractUser自定义User模型后,直接用admin.site.register(User)注册会丢失默认UserAdmin提供的密码修改功能——因为密码修改的专属逻辑是封装在官方UserAdmin类里的。按以下步骤就能恢复该功能:

步骤1:修改admin.py,继承UserAdmin并注册

替换原admin.py代码为以下内容:

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

# 自定义Admin类,继承官方UserAdmin以复用密码修改逻辑
class CustomUserAdmin(UserAdmin):
    # 可按需添加自定义字段到用户列表展示
    list_display = ('username', 'email', 'first_name', 'last_name', 'numero_de_empleado', 'is_staff')
    # 将自定义字段加入编辑页面的字段组
    fieldsets = UserAdmin.fieldsets + (
        (None, {'fields': ('numero_de_empleado',)}),
    )

# 用自定义Admin类注册User模型
admin.site.register(User, CustomUserAdmin)

步骤2:验证效果

重启Django服务后,进入Admin面板编辑用户,就能看到原本的密码修改选项(通常是一个独立的「修改密码」按钮,跳转至专属的密码修改页面)。

补充说明

  • 官方UserAdmin已经内置了密码修改的视图、表单及权限控制逻辑,继承它就能直接复用这些功能。
  • 如果需要对自定义字段做更多Admin配置(比如搜索、过滤),可在CustomUserAdmin中添加search_fields、list_filter等属性实现。

内容的提问来源于stack exchange,提问作者Perla De la O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:32:03