Я пытаюсь сделать пост-запрос для модели со многими ко многим полям
class Product(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
categories = models.ManyToManyField(Category)
quantity = models.IntegerField()
price = models.FloatField()
attribute_values = models.ManyToManyField(Value)
image = models.ImageField(blank=True)
Мой класс сериализатора:
class ProductSerializer(serializers.ModelSerializer):
categories = serializers.ListField(child=serializers.IntegerField())
attribute_values = serializers.ListField(child=serializers.IntegerField())
def create(self, validated_data):
categories = validated_data.pop('categories')
attribute_values = validated_data.pop('attribute_values')
product = Product.objects.create(**validated_data)
for cat_id in categories:
category = Category.objects.get(pk=cat_id)
product.categories.add(category)
for value_id in attribute_values:
value = Value.objects.get(pk=value_id)
product.attribute_values.add(value)
product.save()
return product
class Meta:
model = Product
fields = ('id', 'name', 'description', 'price', 'quantity', 'categories', 'image', 'attribute_values')
Я делаю пост-запрос с данными формы, какон содержит изображение:
var formData = new FormData()
let cats = Object.keys(selectedCategories).map(id => Number(id))
formData.append('image', blob)
formData.append('categories', cats)
formData.append('attribute_values', attributes)
formData.append('name', name)
formData.append('description', description)
formData.append('quantity', quantity)
formData.append('price', 100)
Однако сервер отвечает этой ошибкой:
{"categories":{"0":["A valid integer is required."]},"attribute_values":{"0":["A valid integer is required."]}}
Как мне заставить сервер принимать массив целых чисел с данными формы, как это кажетсядля меня, что на стороне клиента все правильно.Заранее спасибо.