API endpoing, принимающий список в качестве данных в DRF

У меня есть класс Component в моем models.py, и у меня есть массив идентификаторов Component в React, и я хочу отправить их в мой DRF API, чтобы я мог получить их данные в качестве ответа. Я хочу получить что-то вроде этого:

Тело запроса:

{
compIds:[77,54,125],
}

Ответ:

[
{id:77,name:"SMTH 77", price:120},
{id:54,name:"SMTH 54", price:140},
{id:125,name:"SMTH 77", price:61},
]

Это моя компонентная модель:

class Component(models.Model):
    name = models.CharField(max_length=100)
    price = models.PositiveIntegerField()

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = 'قطعه'
        verbose_name_plural = 'قطعات'

Я не знаю, как мне написать свой Serializer и свой viewset.

from rest_framework.views import APIView
from rest_framework import serializers

class ComponentRequestSerializer(serializers.Serializer):

    componentIds = serializers.ListField(
        child=serializers.IntegerField()
    )

class ComponentResponseSerializer(serializers.ModelSerializer):

    class Meta:
        fields = ["id", "name", "price"]
        model = Component

class ComponentAPIView(APIView):

   def post(request):

      request_data = ComponentRequestSerializer(data=request.data)
      request_data.is_valid()
      compIds = request_data.validated_data["compIds"]
      queryset = Component.objects.filter(id__in=compIds)
      response_data = ComponentResponseSerializer(instance=queryset, many=True)
      return Response(response_data)

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