Как перебрать определенный элемент в полезной нагрузке или 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...