Django UserAdmin定制

时间:2015-05-07 05:24:39

标签: django model admin

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

默认情况下,“用户”页面显示用户名,名字,姓氏,电子邮件和工作人员状态,但我还想添加“" 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 个答案:

答案 0 :(得分:2)

这是:

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')