Как отправить массив объектов модели django в post api?
class Product(models.Model):
name = models.CharField(max_length=255)
class Image(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
image = models.ImageField(upload_to="images")
class ProductViewSet(ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
Как я могу сделать свой сериализатор и представления?
Полезная нагрузка моего post api запроса будет такой:
[{"name":"Laptop", "images":[array of image files]}, {"name":"Shoes", "images":[array of images]}]
Предполагая, что ProfileSerializer не доступен только для чтения, и вы правильно направили конечную точку на представление, тогда вы можете просто переопределить метод, который отвечает за POST запросы (например, create), передавая many=True сериализатору:
class ProductViewSet(ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
def create(self, request, *args, **kwargs):
# Pass many=True argument, so that serializer knows it's dealing with an array of data
serializer = self.get_serializer(data=request.data, many=True)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
return Response(serializer.data, status=201)