Невозможно выполнить итерацию по списку массивов в 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)
Я бы посоветовал вам использовать ORM от django вместо того, чтобы писать сырой 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)