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

Django自定义UserAdmin报admin.E012字段重复错误如何解决?

错误原因

admin.E012错误的触发条件是同一个字段在Django Admin的fieldsets配置中被多次定义,和你给mobileNumber设置的unique=True属性没有关联。

排查&修复步骤

1. 修复显式重复的字段配置

你自定义的fieldsets中,name、familyName两个字段同时出现在第1个无标题分组、第2个「User information」分组中,属于重复配置,删掉第二个分组里的这两个重复字段即可:

fieldsets = (
    (None, {'fields': ('name', 'familyName')}),
    # 移除了本行中重复的name、familyName字段
    ('User information', {'fields': ('email', 'mobileNumber', 'password', 'nationalCode')}),
    ('Permissions', {'fields': ('is_staff', 'is_active', 'is_superuser', 'groups')}),
)

2. 修复继承带来的隐式重复

你继承了Django自带的UserAdmin,父类默认已经内置了fieldsets配置,其中默认的Permissions分组已经包含is_staff、is_active、is_superuser、groups、user_permissions字段,和你自己定义的Permissions分组字段重复。如果需要完全自定义字段展示,直接保留上面修改后的fieldsets配置即可,无需额外继承父类的字段配置。

3. 修复add_fieldsets的格式错误

你当前的add_fieldsets写法不符合要求,它需要是嵌套元组结构,你少写了外层括号,会导致Django把它解析成两个独立的分组,也可能触发字段重复报错,修改为:

add_fieldsets = (
    (None, {
        'classes': ('wide',),
        'fields': ('email', 'name', 'familyName', 'mobileNumber', 'password', 'nationalCode')
    }),
)

修改完成后重启Django服务,报错就会消失,Admin后台字段展示也会恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:39:00