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

Django自定义UserModel添加is_admin字段后密码未哈希问题求助

解决Django自定义用户模型Admin页面密码明文存储问题

问题出在你直接用默认的admin.ModelAdmin注册自定义用户模型——它没有内置密码哈希处理逻辑。必须使用Django提供的UserAdmin类来注册,该类会自动调用密码哈希的处理流程。

具体解决步骤:

  1. 在admin.py中导入UserAdmin和你的CustomUser模型
  2. 创建继承自UserAdmin的自定义管理类,将额外字段is_admin添加到fieldsets(编辑用户时的字段分组)和add_fieldsets(添加用户时的字段配置)中
  3. 用这个自定义管理类注册CustomUser

示例代码:

# admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    # 编辑用户页面的字段分组配置
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        ('个人信息', {'fields': ('first_name', 'last_name', 'email')}),
        ('权限设置', {'fields': ('is_active', 'is_staff', 'is_superuser', 'is_admin', 'groups', 'user_permissions')}),
        ('关键日期', {'fields': ('last_login', 'date_joined')}),
    )
    
    # 添加用户页面的字段配置(需包含密码确认字段)
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'password1', 'password2', 'is_admin'),
        }),
    )

# 用自定义管理类注册模型
admin.site.register(CustomUser, CustomUserAdmin)

配置完成后,Admin页面添加/编辑用户时,会自动使用Django内置的用户表单处理逻辑,对输入的密码进行哈希加密,存储到数据库的就是加密后的密码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:23:12