Django中如何获取全部用户组名称而非仅特定用户所属组?
Django获取所有可用用户组的实现方法
你之前使用的groups = request.user.groups.all()仅用于获取当前请求用户所属的用户组,若要获取Django Admin后台展示的全量可用用户组,直接调用Django内置的Group模型的查询接口即可,实现方式如下:
- 首先导入Django内置的用户组模型:
from django.contrib.auth.models import Group - 查询全量用户组:
- 若需要获取完整的用户组对象列表,使用:
all_groups = Group.objects.all() - 若仅需要提取所有用户组的名称,使用
values_list方法直接读取字段即可,返回结果为可迭代的名称序列:group_names = Group.objects.values_list('name', flat=True)
- 若需要获取完整的用户组对象列表,使用:
- 可选对齐Admin排序规则:
Django Admin默认按用户组名称正序排列,可显式添加排序逻辑保证查询结果和Admin展示顺序完全一致:group_names = Group.objects.order_by('name').values_list('name', flat=True)
视图调用示例
from django.contrib.auth.models import Group from django.http import JsonResponse def get_all_group_names(request): # 转为列表后可直接返回给前端或传入模板渲染 group_name_list = list(Group.objects.order_by('name').values_list('name', flat=True)) return JsonResponse({'group_list': group_name_list})
内容的提问来源于stack exchange,提问作者Taufique Alam
相关产品推荐
相关产品推荐

