0

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

4

2 回答 2

3

参考代码'last_name'and'first_name'已经在fieldsets. 然后发生错误,因为布局声明说存在last_name并且first_name在表单字段中不再存在。覆盖fieldsets将解决问题。

于 2012-04-30T08:28:53.730 回答
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
于 2021-02-06T22:19:45.947 回答