【发布时间】:2019-03-10 08:15:02
【问题描述】:
我正在尝试对具有多对多字段的模型发出发布请求
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."]}}
如何让服务器接受带有表单数据的整数数组,因为在我看来,在客户端一切都是正确的。提前致谢。
【问题讨论】:
标签: python django django-rest-framework multipartform-data