Django后台添加CustomUser触发FieldError:未知字段usable_password
解决Django管理面板添加CustomUser时的FieldError(unknown field usable_password)
问题确认
你的排查完全正确,admin.py中CustomUserAdmin类里的笔误(将change_form误写为change)就是触发这个错误的核心原因。
Django的ModelAdmin中,change_form是用于指定自定义修改表单的属性,而错误写成change后,Django会将其当作要渲染的字段名去解析,但你的CustomUser模型并没有usable_password字段,因此直接抛出Unknown field的异常。
解决方法
- 打开项目的
admin.py文件,定位到CustomUserAdmin类 - 修正笔误:将错误的
change属性改为change_form(如果是用于指定自定义修改表单的场景),如果是误加的无效属性,直接删除即可
错误代码示例(对应你的情况):
class CustomUserAdmin(admin.ModelAdmin): # 错误写法:把change_form写成了change change = CustomUserChangeForm add_form = CustomUserCreationForm
修正后的代码:
class CustomUserAdmin(admin.ModelAdmin): # 正确写法:使用change_form指定修改表单 change_form = CustomUserChangeForm add_form = CustomUserCreationForm
- 保存文件后重启Django服务,再次进入管理面板添加CustomUser就不会触发该错误了。
补充:之前删除db.sqlite3和迁移文件的操作是不必要的,因为问题根源不在数据库结构,而是admin配置的笔误。
内容的提问来源于stack exchange,提问作者khanzala
相关产品推荐
相关产品推荐

