【问题标题】:Django rest framework listfield valid integer is required formdataDjango rest 框架 listfield 有效整数是必需的 formdata
【发布时间】: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


    【解决方案1】:

    序列化程序手册字段“类别”不正确。您可以删除此行并允许 DRF 生成自动字段或使用primarykeyrelatedfield

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 2014-05-21
      • 2019-04-23
      • 2018-04-18
      • 1970-01-01
      相关资源
      最近更新 更多