Итерация и добавление различных значений из JSON в переменную

Я пытаюсь выполнить итерацию и добавить QId и Answer из полезной нагрузки, желаемый результат должен быть таким 12|Yes&&13|Yes&&14|Yes&&15|Yes&&16|Yes&&17|Yes&&.

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

Qstans = str(qid)+'|'+ answer+'&&'.join([str(qid)+'|'+(answer) for ran in request.data]) эта строка, которая добавляет значения

вывод, который я получаю

12|Yes12|Yes&&12|Yes&&12|Yes&&12|Yes&&12|Yes&&12|Yes

payload:

0: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 150…}
1: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "No", QId: 151…}
2: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 152…}
3: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 153…}
4: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "No", QId: 154…}
5: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "Yes", QId: 155…}
6: {AuditorId: 10, Agents: "Joshi", Supervisor: "Prabhu", TicketId: "HRR6506691",Answer: "No", QId: 156…}

код здесь:

@api_view(['POST'])
def SaveUserResponse(request):
   
  if request.method == 'POST': 

    for ran in request.data:
        qid = ran.get('QId')
        answer = ran.get('Answer')
        Qstans = str(qid)+'|'+ answer+'&&'.join([str(qid)+'|'+(answer) for ran in request.data])
        print(Qstans)

Вы используете понимание списка в цикле, что является излишним для (как я понимаю) вашей цели. Внутри понимания вы также используете переменные, которые вы назначили в цикле, что приводит к тому, что все значения Q/A равны 12 и "Да" соответственно.

Просто поменяйте местами цикл и используйте:

if request.method == 'POST':
    Qstans = '&&'.join(str(ran.get('QId')) + '|' + str(ran.get('Answer')) for ran in request.data)

должно быть достаточно.
Я не смог проверить это, потому что вы не предоставили объект Python, как упоминал mozway в комментариях, но это должно работать с небольшими изменениями (например, добавлением '&&' в случае, если вам это необходимо).

Похоже, что происходит двойная итерация, поэтому вы можете попробовать этот код вместо этого

@api_view(['POST'])
def SaveUserResponse(request):
   
  if request.method == 'POST': 
    Qstans = ""
    for ran in request.data:
        qid = ran.get('QId')
        answer = ran.get('Answer')
        Qstans = Qstans + str(qid)+'|'+ answer+'&&'
    print(Qstans)

обратите внимание, что print(Qstans) находится вне цикла

Вернуться на верх