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字段,方便快速查看用户信息
验证步骤
- 保存修改后的
admin.py文件 - 重启Django开发服务器
- 进入Admin面板尝试添加/编辑用户,此时
phone字段会正常显示
内容的提问来源于stack exchange,提问作者Abdo Darboolei
相关产品推荐
相关产品推荐

