无法遍历 Django 中的数组列表

Cannot Iterate through the array list in Django

我正在遍历数据库中的所有记录,但只有第一行反映在输出中。元组列表的数据库数据

 [(('HR749', datetime.datetime(2021, 11, 5, 20, 0, 17), 'Web', 'Referrals ', 'Draft', 'Bus', 'India', 'satish', 10902, 'Openings', datetime.date(2021, 11, 10),('HR855', datetime.datetime(2021, 11, 5, 20, 11, 41), 'Web', 'Referrals ', 'Draft', 'BusS', 'India', 'mah', 83837, ' referral', datetime.date(2021, 11, 10)), ('HR929', datetime.datetime(2021, 11, 5, 20, 22, 58), 'Web', 'Referrals ', 'Draft', 'BusS', 'India', 'ritika', 6124, 'Unable to submit', datetime.date(2021, 11, 10))]

这里,我试过的,我知道很简单,但我不知道为什么我无法从数据库中获取所有记录

views.py:

  @api_view(['GET', 'POST'])
def ClaimReferenceView(request,userid):
    try:
        userid = Tblclaimreference.objects.filter(userid=userid)
      
    except Tblclaimreference.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':

        userID = request.data.get(userid)
        print(userID)
        cursor = connection.cursor()
        cursor.execute('EXEC [dbo].[sp_GetClaims]  @UserId= %s',('10',))

        result_set = cursor.fetchall()
        print(type(result_set))
        print(result_set)
        
        for row in result_set:
            
          Number= row[0]
          Opened = row[1]
          Contacttype = row[2]
          Category1 = row[3]
          State = row[4]
          Assignmentgroup = row[5]
          Country_Location = row[6]
          Openedfor = row[7]
          Employeenumber = row[8]
          Shortdescription = row[9]
          AllocatedDate = row[10]
       

        return Response({"Number":Number,"Opened":Opened, "Contacttype": Contacttype, "Category1":Category1, 
        "State":State, "Assignmentgroup":Assignmentgroup, "Country_Location": Country_Location, "Openedfor":Openedfor,
         "Employeenumber":Employeenumber, "Shortdescription": Shortdescription, "AllocatedDate":AllocatedDate}, status=status.HTTP_200_OK)

我建议您使用 django 的 ORM 而不是编写原始 SQL。 但是,在您的情况下,您需要做的是制作一个包含所有行的列表 (response_data) 并将每个字典附加到它。 这应该有效:

def ClaimReferenceView(request,userid):
    try:
        userid = Tblclaimreference.objects.filter(userid=userid)
      
    except Tblclaimreference.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':

        userID = request.data.get(userid)
        print(userID)
        cursor = connection.cursor()
        cursor.execute('EXEC [dbo].[sp_GetClaims]  @UserId= %s',('10',))

        result_set = cursor.fetchall()
        print(type(result_set))
        print(result_set)
        
        respone_data = []
        for row in result_set:
            response_data.append(
                {
                    "Number": row[0],
                    "Opened": row[1], 
                    "Contacttype": row[2], 
                    "Category1": row[3],
                    "State": row[4], 
                    "Assignmentgroup": row[5], 
                    "Country_Location": row[6], 
                    "Openedfor": row[7],
                    "Employeenumber": row[8], 
                    "Shortdescription": row[9], 
                    "AllocatedDate": row[10]
                } 
            )

        return Response(response_data, status=status.HTTP_200_OK)