Как перебрать определенный элемент в полезной нагрузке или JSON

Я пытаюсь вставить все поля из полезной нагрузки, где значения QId и Answer изменяются. Все, что я сделал, это попробовал зациклить QId и Answer, но вставляются только последние данные. Я хотел вставить все значения из QId и Answer

views.py

  cursor = connection.cursor()
   for ran in request.data:

            print('request.data--', ran)
            auditorid =ran.get('AuditorId')
            print('SaveUserResponse auditorid---', auditorid)
            ticketid = ran.get('TicketId')
            qid = ran.get('QId')
            answer = ran.get('Answer')
            sid = '0'
            print('sid--', sid)
            for i in request.data:
               qid = i['QId']
               print('qid--', qid)
               answer = i['Answer']
               print('answer--', answer)
        
            
        cursor.execute('EXEC [dbo].[sp_SaveAuditResponse] @auditorid=%s,@ticketid=%s,@qid=%s,@answer=%s,@sid=%s',
                                        (auditorid,ticketid,qid,answer, sid))
        print(qid)
        result_st = cursor.fetchall()
        print('sp_SaveAuditResponse', result_st)
    
        for row in result_st:
                print('sp_SaveAuditResponse', row)
        return Response(row[0])

payload:

        [{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":42,"Answer":"2","SID":"0","Comments":""}, 

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":43,"Answer":"2","SID":"0","Comments":""},  

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":44,"Answer":"2","SID":"0","Comments":""}, 

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":45,"Answer":"2","SID":"0","Comments":""}, 

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":46,"Answer":"3","SID":"0","Comments":""}, 
{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":47,"Answer":"5","SID":"0","Comments":""}, 

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":48,"Answer":"5","SID":"0","Comments":""}, 

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":49,"Answer":"2","SID":"0","Comments":""}, 

{"AuditorId":130,"Agents":"","Supervisor":"","TicketId":"325423432","QId":50,"Answer":"5","SID":"0","Comments":""}]

Вы, по сути, перезаписываете Qid и answer внутри второго for loop.

for i in request.data:
     qid = i['QId']
     print('qid--', qid)
     answer = i['Answer']
     print('answer--', answer)

Не уверен, чего вы пытались добиться этим циклом, но он снова перебирает request.data, который на самом деле идет в конец и присваивает "QId":50, "Answer":"5" для всех остальных answers и Qids. Отсюда следует, почему он сохраняет только последние Qid и answer для всех.

Это должно сработать для вас в этом случае...

for ran in request.data:
     auditorid =ran.get('AuditorId')
     ticketid = ran.get('TicketId')
     qid = ran.get('QId')
     answer = ran.get('Answer')
     sid = '0'

     # Remove the second loop

     cursor.execute('EXEC [dbo].[sp_SaveAuditResponse] @auditorid=%s,@ticketid=%s,@qid=%s,@answer=%s,@sid=%s',
                                    (auditorid,ticketid,qid,answer, sid))

     # other code below...
Вернуться на верх