我不喜欢将用户名强制转换为单独的first_name和last_name字段,因此我将profile.first_name和user.last_name替换为profile.fullname。
在管理员中显示所有三个名字没有意义,所以我尝试了这个:
admin.site.unregister(User)
class ProfileInline(admin.StackedInline):
model = Profile
class ProfileAdmin(UserAdmin):
inlines = [ProfileInline]
exclude = ('first_name', 'last_name')
admin.site.register(User, ProfileAdmin)
这不起作用,我不知道为什么:
渲染时捕获KeyError:“在表单中找不到键'first_name'
答案 0 :(得分:2)
参考the code,'last_name'
和'first_name'
已在fieldsets
中声明。然后发生错误,因为布局声明显示在表单字段中找不到last_name
和first_name
。覆盖fieldsets
将起到作用。
答案 1 :(得分:0)
class UserAdminCustom(UserAdmin):
def get_fieldsets(self, request, obj=None):
fieldsets = super().get_fieldsets(request, obj)
new = []
for name, fields_dict in fieldsets:
if fields_dict['fields'] == ('first_name', 'last_name', 'email'):
fields_dict['fields'] = ('email',)
new.append((name, fields_dict))
return new