Ошибка атрибута: объект 'list' не имеет атрибута 'get'

Я пытаюсь получить данные методом POST, это JSON внутри списка. Всякий раз, когда я пытаюсь прочитать JSON, я получаю ошибку ticketid = request.data.get('TicketId') AttributeError: 'list' object has no attribute 'get'

Вот, что я пробовал

views.py

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

Данные нагрузки:

 [
    0: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 1, Answer: "2", SID: "0",…}
    1: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 2, Answer: "2", SID: "0",…}
    2: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 3, Answer: "2", SID: "0",…}
    3: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 4, Answer: "2", SID: "0",…}
    4: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 5, Answer: "5", SID: "0",…}
    5: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 6, Answer: "5", SID: "0",…}
    6: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 7, Answer: "3", SID: "0",…}
    7: {AuditorId: 122, Agents: "", Supervisor: "", TicketId: "12111", QId: 8, Answer: "3", SID: "0",…}
]

Как отметил Виллем Ван Онсем, ваш request.data - это список, поэтому вы не можете использовать .get. Чтобы использовать .get, вам нужно обратиться к определенному словарю из этого списка.

Я не совсем уверен, какой TicketId вам нужен, но если это не важно, потому что они все одинаковые, вы можете сделать так:

request.data[0].get('TicketId')

Если вам нужны все отмеченные ID в виде списка, вы можете использовать понимание списка

[d['TicketId'] for d in request.data]
Вернуться на верх