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

如何在Django 5管理后台启用自定义用户模型的密码修改功能?

解决Django 5后台自定义用户模型密码无法正确哈希的问题

问题根源在于Django admin默认的ModelAdmin不会处理密码字段的哈希逻辑,直接输入明文保存后,密码会以明文存储(而非Django要求的哈希格式),导致用户无法登录。正确的做法是使用Django自带的UserAdmin类来管理自定义用户模型,它内置了密码哈希处理逻辑。

解决步骤

  1. 导入必要的类
    在你的admin.py文件中,导入UserAdmin和自定义用户模型:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import MyCustomUser
  1. 自定义Admin类(可选,若需显示自定义字段)
    如果需要在后台管理中展示role、profile_photo等自定义字段,继承UserAdmin并调整字段配置:
class MyCustomUserAdmin(UserAdmin):
    # 调整用户详情页面的字段分组,添加自定义字段
    fieldsets = UserAdmin.fieldsets + (
        ("自定义信息", {"fields": ("role", "profile_photo")}),
    )
    # 调整添加用户页面的字段,添加自定义字段
    add_fieldsets = UserAdmin.add_fieldsets + (
        ("自定义信息", {"fields": ("role", "profile_photo")}),
    )
  1. 注册自定义用户模型
    使用UserAdmin(或自定义的MyCustomUserAdmin)注册你的用户模型:
# 若使用自定义Admin类
admin.site.register(MyCustomUser, MyCustomUserAdmin)

# 若无需显示自定义字段,直接用默认UserAdmin
# admin.site.register(MyCustomUser, UserAdmin)

效果说明

  • 后台查看用户时,密码字段会显示为********而非哈希值;
  • 管理员输入新密码保存时,系统会自动调用set_password()方法对密码进行哈希处理;
  • 用户可以正常使用新密码登录。

内容的提问来源于stack exchange,提问作者Corey Manshack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:18:13