Django UserAdmin 自定义
Django UserAdmin customization
在我的用户页面中,我想添加更多列字段以显示每个用户。
默认情况下,用户页面显示用户名、名字、姓氏、电子邮件和员工状态,但我还想添加要显示的列 "Chosen Groups"。
每个用户都可以是零个或多个组的一部分,因此我想显示每个用户所属的所有组(或 None)的列表。
我整理了一些东西,但我不确定如何实际获取组数据并将其放入 "Chosen Groups" 列的 "string" 表格中。
这是我失败的尝试...
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)
这里是:
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')
在我的用户页面中,我想添加更多列字段以显示每个用户。
默认情况下,用户页面显示用户名、名字、姓氏、电子邮件和员工状态,但我还想添加要显示的列 "Chosen Groups"。
每个用户都可以是零个或多个组的一部分,因此我想显示每个用户所属的所有组(或 None)的列表。
我整理了一些东西,但我不确定如何实际获取组数据并将其放入 "Chosen Groups" 列的 "string" 表格中。
这是我失败的尝试...
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)
这里是:
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')