首页 > 解决方案 > 如何使用 Django 从 QuerySet 中提取特定记录?

问题描述

可以说:我有views.py。这Employees是具有一些字段的模型类,例如:姓名、电子邮件、通行证、手机等。

def login(request):

   if request.method == 'POST':

     emp = Employees.objects.filter(email=request.POST['email'],
           password=request.POST['password'])
     
     if emp:

      # Now here I'm getting confused how to get particular record like id, 
      # email, pass from emp var to store in session. 

       request.session['id'] = emp[0].id    # here is the main problem
       request.session['email'] = emp[0].email
       stmt1
       stmt2
       return redirect('/homepage')  
     else:
       return render(request, 'forms/login.html')
  else:

     stmt1
     stmt2  

最后我说这是我想从查询集中得到的提示。请不要问我为什么要进行编码。我可能是错的,所以请忽略我的错误,并给我最好的方法来做到这一点,只有我发现的问题#所以与大家分享。

标签: pythondjangodjango-queryset

解决方案


由于您期望返回单个对象,因此您可以在try/except旁边使用块objects.get()

就像是:

try:
    employee = Employee.objects.get(email=request.POST['email'],password=request.POST['password']
    return redirect('/homepage')
except Employee.DoesNotExist:
    return render(request, 'forms/login.html')

推荐阅读