Ожидаемая строка или байтоподобный объект при отправке Post-запроса к представлению

У меня есть представление, где я делаю post request из моего фронтенда, я отправляю список объектов в качестве тела в эту конечную точку. Я получил список в переменной files. Теперь я пытаюсь создать объект с данными, которые я получаю из моего списка files, но я получаю эту ошибку

@api_view(("POST",))
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
def get_import(request):
   files = json.loads(request.body)  
   print(files)    # im able to see the list in the console.
   user = UserAccount.objects.filter(email=request.user).first()
   for i in range(len(files)):
        trans, created = Transaction.objects.update_or_create(
           chp_reference=files[i]["transaction_chp_reference"],
           defaults={
               "user": user,
               "income_period": files[i]["transaction_income_period"],
               "property_market_rent": files[i]["transaction_property_market_rent"],
        },
    )
    trans.save()
  return Response(status=status.HTTP_201_CREATED)

Я попытался удалить все миграции и db, и создать заново. но все та же проблема.

Я полагаю, что json.loads() создаст словарь, поэтому для итерации сделайте следующее:

@api_view(("POST",))
@renderer_classes((TemplateHTMLRenderer, JSONRenderer))
def get_import(request):
   files = json.loads(request.body)  
   print(files)    # im able to see the list in the console.
   user = UserAccount.objects.filter(email=request.user).first()
   for key, value in files:
        trans, created = Transaction.objects.update_or_create(
           chp_reference=value["transaction_chp_reference"],
           defaults={
               "user": user,
               "income_period": value["transaction_income_period"],
               "property_market_rent": value["transaction_property_market_rent"],
        },
    )
    trans.save()
  return Response(status=status.HTTP_201_CREATED)

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