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

扩展Django User模型时自定义字段未在admin后台显示的求助

问题解决方案

核心原因

你自定义的UserProfile继承了AbstractBaseUser并重写了用户模型,在配置对应Admin时,仅修改了列表页展示字段list_display,但Django自带的UserAdmin默认的**详情页字段配置(fieldsets)和新增用户页字段配置(add_fieldsets)**没有包含你新增的dob、gender等自定义字段,因此这些字段不会在Admin的详情编辑页展示。另外你当前的Admin代码还存在导入缺失的问题,可能导致Admin注册逻辑未生效。

具体解决步骤

1. 修正Admin代码的导入错误

你代码中注册scrumboard相关模型时,没有导入对应models,会触发报错导致后续UserProfile的Admin注册不执行,需要先补全导入:

# 你当前的admin/__init__.py开头补入这行
from scrumboard import models

2. 重写UserProfileAdmin的字段配置

在原有list_display的基础上,新增fieldsets和add_fieldsets配置,把自定义字段加入展示列表:

class UserProfileAdmin(UserAdmin):
    # 列表页展示字段,新增gender
    list_display = (
        'id', 'first_name', 'username', 'email', 'is_active', 'dob', 'gender'
    )
    # 编辑用户详情页的字段分组,在原有UserAdmin配置基础上追加自定义字段
    fieldsets = UserAdmin.fieldsets + (
        ('额外信息', {'fields': ('dob', 'gender', 'phone_number', 'about')}),
    )
    # 新增用户页面的字段分组,追加必填的自定义字段
    add_fieldsets = UserAdmin.add_fieldsets + (
        ('额外必填信息', {'fields': ('dob', 'gender', 'phone_number')}),
    )

admin.site.register(UserProfile, UserProfileAdmin)

3. 可选优化(建议配置)

  • 把UserProfileAdmin的配置移到usermanagement app下的admin.py文件中,Django会自动加载每个app下的admin配置,更符合开发规范,避免根目录Admin文件过大导致冲突。
  • 在UserProfile模型中补充REQUIRED_FIELDS配置,避免创建超级用户时出现字段缺失错误:
class UserProfile(AbstractBaseUser, PermissionsMixin):
    # ... 原有字段不变
    USERNAME_FIELD = 'email'
    # 新增这行,指定创建超级用户时需要额外填写的字段
    REQUIRED_FIELDS = ['username', 'first_name']

4. 生效配置

修改完成后重启Django开发服务,刷新Admin页面即可看到自定义字段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 09:06:05