Django rest framework POST ошибка. Когда я отправляю JSON/словарь внутри Json, он возвращает: "Not a valid string".

Я пытаюсь заставить работать этот тестовый API, он очень простой и модель состоит только из одного класса с 2 полями. Мой набор представлений наследуется от ModelViewset и я добавил (чтобы сделать его более явным, и внести некоторые изменения в будущем) список и функцию create. Я могу отправить несколько JSON с успехом, но когда я пытаюсь отправить этот JSON, который имеет "вложенный json", он возвращает

 "Not a valid string."

Вот код и JSON:

views.py:

class SessionViewset(viewsets.ModelViewSet):
    """"
    A simple viewset for listing or retrieving 'sessions'
    """
    queryset = Session.objects.all()
    serializer_class = SessionSerializer

    def list(self, request):
        queryset = Session.objects.all()
        serializer = SessionSerializer(queryset, many=True)
        return Response(serializer.data)
    
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

JSON:

{
    "meta":"aca va la metadata",
    "reunion":{"juan":500,
            "pedro":300,
            "jose":1000}

}

и возвращает:

{
    "reunion": [
        "Not a valid string."
    ]
}

Скриншот: screenshot of the problem

Знаете ли вы, есть ли какое-то ограничение, о котором я не знаю, или как я могу решить эту проблему? Спасибо

Попытался отправить этот JSON в конечную точку API с ответом об ошибке

@MS25, как я упоминал в комментарии, ваша модель имеет воссоединение как CharField и вы посылаете ей объектный тип данных

Если вы все еще хотите отправлять те же данные на воссоединение, то попробуйте что-то вроде:

{
    "meta":"aca va la metadata",
    "reunion":JSON.stringify({"juan":500,
            "pedro":300,
            "jose":1000})
}

Я не уверен в результатах, возможно, это сработает, возможно, нет.

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