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

Django自定义User Model Admin异常:自定义字段不显示求助

解决Django自定义用户模型Admin面板不显示自定义字段的问题

问题原因

你自定义的CustomUserAdmin未正确配置字段展示规则与表单字段,导致Admin面板无法识别并显示phone字段;而直接注册CustomUser时,Django会使用默认模型管理配置,自动包含所有模型字段。

正确的CustomUserAdmin配置示例

假设你的CustomUser模型代码如下:

# accounts/models.py
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    phone = models.CharField(max_length=11, unique=True, verbose_name="手机号")

对应的CustomUserAdmin需按以下方式编写:

# accounts/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', 'phone')}),  # 加入phone字段
        ('权限设置', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        ('重要日期', {'fields': ('last_login', 'date_joined')}),
    )
    # 添加用户页面的字段配置
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'phone', 'password1', 'password2'),  # 加入phone字段
        }),
    )
    # Admin列表页显示的字段(可选配置)
    list_display = ('username', 'email', 'phone', 'is_staff')

admin.site.register(CustomUser, CustomUserAdmin)

关键配置说明

  • fieldsets:控制编辑用户页面的字段分组展示,必须将phone字段加入对应分组
  • add_fieldsets:控制添加用户页面的字段列表,需包含phone字段才能在创建用户时输入
  • list_display:可选配置,让Admin列表页直接展示phone字段,方便快速查看用户信息

验证步骤

  1. 保存修改后的admin.py文件
  2. 重启Django开发服务器
  3. 进入Admin面板尝试添加/编辑用户,此时phone字段会正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:09:50