Django自定义User模型字段未在Admin后台显示,如何解决?
解决Django Admin不显示自定义User模型新增字段的问题
这问题我之前也碰到过!原因是默认的Django UserAdmin组件并没有自动识别你新增的name和contact字段,得我们手动扩展Admin的配置,把这些字段加进去才行。具体操作步骤如下:
步骤1:在你的authentication应用中创建/修改admin.py文件
打开apps/authentication/admin.py(如果没有就新建一个),然后添加以下代码:
from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .models import User # 自定义UserAdmin类,继承默认的UserAdmin class CustomUserAdmin(UserAdmin): # 配置编辑用户页面的字段分组 fieldsets = ( # 保留默认UserAdmin的所有字段组 *UserAdmin.fieldsets, # 新增一个分组,用来放我们自定义的字段 ( '额外信息', # 这个分组名称可以根据需求修改 { 'fields': ('name', 'contact'), # 填入你新增的字段 }, ), ) # 配置添加用户页面的字段(如果需要在新建用户时就能填写这些字段的话) add_fieldsets = ( *UserAdmin.add_fieldsets, ( '额外信息', { 'fields': ('name', 'contact'), }, ), ) # 用自定义的CustomUserAdmin注册我们的User模型 admin.site.register(User, CustomUserAdmin)
步骤2:重启Django开发服务器
修改完admin.py后,记得重启你的Django开发服务器,这样新的Admin配置才能生效。
原理说明
默认的UserAdmin是为Django原生的User模型设计的,它的fieldsets和add_fieldsets里只包含原生User模型的字段(比如username、email、password这些)。我们通过继承UserAdmin并扩展这两个属性,把自定义的字段加入进去,Admin页面就会显示这些字段了。
内容的提问来源于stack exchange,提问作者Donovan Keating
相关产品推荐
相关产品推荐

