2015-05-07 43 views
1

在我的用户页面中,我想添加更多列字段以显示每个用户。Django UserAdmin定制

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

回答

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

这工作得很好!谢谢! – pj2452