Django自定义模型嵌入User admin报_meta属性错误的解决方法
错误原因
抛出AttributeError: type object 'ProfileInline' has no attribute '_meta'是因为你的admin配置存在两个核心问题:
@admin.register()的作用是将ORM模型注册到后台管理,仅能传入实际的模型类作为参数。你当前错误传入了ProfileInline这个内联配置类,Django会尝试读取模型专属的_meta属性,直接触发属性错误。- 你没有将自定义的Profile内联配置关联到Django内置User模型的原有Admin配置上,即使修正装饰器错误,Profile字段也不会出现在User的管理页面中。
正确配置步骤
你需要先注销Django默认注册的User模型Admin配置,再重新注册绑定了Profile内联的自定义UserAdmin类,修改后的admin.py完整代码如下:
from django.contrib import admin from django.contrib.auth.models import User from .models import Profile class ProfileInline(admin.StackedInline): model = Profile can_delete = False verbose_name_plural = 'Extra Information' # 注销User模型默认的后台注册配置 admin.site.unregister(User) # 重新注册绑定了Profile内联的User后台配置 @admin.register(User) class UserAdmin(admin.ModelAdmin): inlines = [ ProfileInline, ]
配置完成后重启Django服务,进入User模型的新增/编辑页面,就能看到堆叠展示的Profile额外信息模块,和系统默认管理模块的交互逻辑完全一致,你之前存在Profile表中的存量数据也会通过user_id外键自动匹配对应用户正常展示。
内容的提问来源于stack exchange,提问作者user5572483
相关产品推荐
相关产品推荐

