0

I trying to insert all the fields from the payload where values of QId and Answer changes. All I did is I tried looping the QId and Answer but the only one last data is getting inserted. I wanted to insert all value of the QId and 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":""}]
kelvin003
  • 31
  • 8

1 Answers1

0

You are basically overwriting the Qid and answer within the second for loop.

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

Not sure what you were trying to accomplish with that loop, but it's looping over request.data again which is actually going to the end of it and assigning "QId":50, "Answer":"5" for all the other answers and Qids. Hence why it is saving only the last Qid and answer for everything.

This should work for you in this case...

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...
Damoiskii
  • 1,328
  • 1
  • 5
  • 20