You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中根据提交的用户名查询对应用户的用户组

Django根据提交的用户名查询对应用户组

你可以通过Django自带的User模型先获取目标用户实例,再查询其关联的用户组,以下是具体实现方式:

基础实现(带异常处理)

from django.contrib.auth.models import User
from django.http import HttpResponseBadRequest

if request.method == 'POST':
    action_man = request.POST.get('technician_name')
    if not action_man:
        # 处理字段为空的情况
        return HttpResponseBadRequest("请填写技术人员名称")
    
    try:
        # 根据用户名获取用户实例
        target_user = User.objects.get(username=action_man)
        # 获取该用户所有关联的组
        user_groups = target_user.groups.all()
        
        # 提取组名列表(按需使用)
        group_names = [group.name for group in user_groups]
        
        # 后续可将组信息写入数据库或做其他业务处理
        print(f"{action_man}所属用户组:{group_names}")
    except User.DoesNotExist:
        # 处理用户不存在的情况
        return HttpResponseBadRequest(f"不存在名为{action_man}的用户")

简化写法(返回404页面)

如果希望用户不存在时直接返回404页面,可使用get_object_or_404:

from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404

if request.method == 'POST':
    action_man = request.POST.get('technician_name')
    if action_man:
        target_user = get_object_or_404(User, username=action_man)
        # 直接获取组名字符串列表
        group_names = target_user.groups.values_list('name', flat=True)
        # 后续业务逻辑处理

关键说明

  • target_user.groups.all() 返回该用户所属的Group对象查询集,可遍历获取组的ID、名称等属性
  • values_list('name', flat=True) 能快速得到组名字符串列表,适合无需完整组对象的场景
  • 必须处理用户名为空和用户不存在的情况,避免程序抛出未捕获异常

内容的提问来源于stack exchange,提问作者piseynir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 23:05:01