Django UserAdmin 自定义

Posted

技术标签:

【中文标题】Django UserAdmin 自定义【英文标题】:Django UserAdmin customization 【发布时间】:2015-07-17 12:33:58 【问题描述】:

在我的用户页面中,我想为每个用户添加更多列字段。

默认情况下,用户页面显示用户名、名字、姓氏、电子邮件和员工状态,但我还想添加“选择的组”列。

每个用户可以是零个或多个组的一部分,因此我想显示每个用户所属的所有组(或无)的列表。

我把一些东西放在一起,但我不确定如何实际获取组数据并将其放入“Chosen Groups”列的“字符串”形式。

这是我失败的尝试...

class UserAdmin(admin.ModelAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'date_joined', 'get_groups')

    def get_groups(self, object):
        #code...

#User is registered by default, need to unregister than register to apply custom updates to UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)    

【问题讨论】:

【参考方案1】:

这里是:

def get_groups(self, object):
    return u', '.join(g.name for g in object.groups.all()) or 'None'
get_groups.short_description = 'Chosen Groups'

要减少 sql 查询的数量,您还可以覆盖 get_queryset() 方法:

def get_queryset(self, request):
    qs = super(UserAdmin, self).get_queryset(request)
    return qs.prefetch_related('groups')

【讨论】:

以上是关于Django UserAdmin 自定义的主要内容,如果未能解决你的问题,请参考以下文章

Django UserAdmin的add_fieldsets?

Django-Xadmin的布局自定义方式

Django后台Admin继承UserAdmin增加用户不显示明文方法

Sonata Admin的自定义Flash消息

django中如何设置函数自定义执行

python/django models中自定义用户认证及django admin自定义