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

Django自定义用户模型Admin创建账户显示密码及自定义字段方法

Django Admin自定义用户模型配置方案

Django内置的UserAdmin默认仅适配原生AbstractUser的字段列表,不会自动识别扩展的自定义字段,因此直接注册模型或者直接绑定默认UserAdmin都会出现功能缺失,按以下方式配置即可同时实现密码二次确认、自定义字段编辑两个需求:

不要直接注册模型,也不要直接绑定默认UserAdmin,自定义一个继承UserAdmin的管理类,重写字段集配置即可。在对应app的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", "name", "surname", "account_type")}),
        ("权限设置", {"fields": ("is_active", "is_staff", "is_superuser", "groups", "user_permissions")}),
        ("时间记录", {"fields": ("last_login", "date_joined")}),
    )
    # 新建用户页面的字段,保留内置的password1、password2实现密码二次输入校验
    add_fieldsets = (
        (None, {
            "classes": ("wide",),
            "fields": ("username", "password1", "password2", "name", "surname", "account_type"),
        }),
    )
    # 可选:配置用户列表页展示的字段,方便后台管理
    list_display = ("username", "email", "name", "surname", "account_type", "is_staff")

admin.site.register(CustomUser, CustomUserAdmin)

配置注意事项

  • add_fieldsets中的password1、password2是UserAdmin内置的密码输入、二次确认字段,不可删除,否则新建用户时会丢失密码校验功能,无法生成符合加密规则的有效用户密码
  • 如果需要自定义字段在新建用户时为必填项,直接在CustomUser模型定义中去掉对应字段的blank=True参数即可,Admin会自动做必填校验
  • 你贴出的模型代码中account_type字段定义末尾缺少闭合括号,且外键关联的模型名Locationd疑似笔误,修正后再执行迁移:
# 修正后的字段定义示例
account_type = models.ForeignKey(Location, on_delete=models.CASCADE, blank=True, null=True)
  • 配置修改完成后无需执行数据库迁移,刷新Admin页面即可生效:新建用户时会同时显示密码二次输入框和所有自定义字段,编辑已有用户时也可以修改自定义字段内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:33:29