在Django的管理员中隐藏first_name和last_name

时间:2012-04-29 20:36:32

标签: django django-admin

我不喜欢将用户名强制转换为单独的first_name和last_name字段,因此我将pr​​ofile.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'

2 个答案:

答案 0 :(得分:2)

参考the code'last_name''first_name'已在fieldsets中声明。然后发生错误,因为布局声明显示在表单字段中找不到last_namefirst_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
相关问题