Ожидался список элементов, но получен тип queryset

Я хочу сделать get api, который возвращает json, содержащий 3 таблицы. Эти 3 массива должны содержать список различных объектов. Я хочу получить в качестве результата:

{
   "array_1": [{"id", "name"}, {"id2", "name2"}],
   "array_2": [{"id", "date"}, {"id2", "date2"}],
   "array_4": [{"id", "otherfield"}, {"id2", "otherfield2"}],
}

Мои сериализаторы:

class Object1Serializer(serializers.ModelSerializer):
    class Meta:
        model = Object1
        fields = ['id', 'photo',]

class Object2Serializer(serializers.ModelSerializer):
    class Meta:
        model = Object2
        fields = ['id', 'name', 'date']

class Object3Serializer(serializers.ModelSerializer):
    class Meta:
        model = Object3
        fields = ['id', 'file']

class ObjectsSerializer(serializers.Serializer):
    object_1 = Object1Serializer(many=True, required=False)
    object_2 = Object2Serializer(many=True, required=False)
    object_3 = Object3Serializer(many=True, required=False)

Мое мнение:

class getObjectAPIView(APIView):
    permission_classes = [permissions.IsAuthenticated]
    serializer_class = ObjectsSerializer

    def get(self, request, machine_pk):
        user = request.user

        if not machine_pk:
            return Response("Missing id machine field", status=status.HTTP_400_BAD_REQUEST)

        if not Machine.objects.filter(pk=machine_pk).exists():
            return Response("Machine not found", status=status.HTTP_404_NOT_FOUND)

        if not user.is_staff and not user.groups.filter(name="frigo").exists():
            return Response("You are not allowed to access this machine", status=status.HTTP_403_FORBIDDEN)
        
        machine = Machine.objects.get(pk=machine_pk)
        object1 = Object1.objects.filter(machine=machine)
        object2 = Object2.objects.filter(machines=machine)
        object3 = Object3.objects.filter(client=machine.client)      

               
        json_response = {
            "object1": object1.values(),
            "object2": object2.values(),
            "object3": object3.values(),
        }
        
        serializer = ObjectsSerializer(data=json_response)
        serializer.is_valid(raise_exception=True)

        return Response(serializer.data, status=status.HTTP_200_OK)

Но я получил ошибку:

{
    "object1": {
        "non_field_errors": [
            "Expected a list of items but got type \"QuerySet\"."
        ]
    },
    "object2": {
        "non_field_errors": [
            "Expected a list of items but got type \"QuerySet\"."
        ]
    },
    "object3": {
        "non_field_errors": [
            "Expected a list of items but got type \"QuerySet\"."
        ]
    }
}

Я попробовал с serializer.is_valid(raise_exception=True), я получил json, но со всеми полями. То есть, например, для объекта_1 у меня в результате все поля объекта, а не то, что я определил в сериализаторе.

Я также пытался преобразовать объекты следующим образом:

json_response = {
            "object1": list(object1.values()),
            "object2": list(object2.values()),
            "object3": list(object3.values()),
        }

Но я получил другую ошибку: The submitted data was not a file. Check the encoding type on the form

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