在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
相关产品推荐
相关产品推荐

