Django остальные рамки списка поле допустимое целое число требуется formdata - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь сделать пост-запрос для модели со многими ко многим полям

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."]}}

Как мне заставить сервер принимать массив целых чисел с данными формы, как это кажетсядля меня, что на стороне клиента все правильно.Заранее спасибо.

1 Ответ

0 голосов
/ 10 марта 2019

Неправильно введено в поле ручного ввода сериализатора категории. Вы можете стереть эту строку и разрешить DRF генерировать автоматическое поле или использовать primarykeyrelatedfield

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...