DRF разбирает массив чисел как строковый массив

Когда я делаю POST-запрос из JavaScript к бэкенду Django Rest Framework, мой массив чисел интерпретируется как список строк на бэкенде, что вызывает эту ошибку: cargo: ["Incorrect type. Expected pk value, received str."]

Вот как я делаю запрос на JavaScript:

const data = new FormData();
data.append("cargo", JSON.stringify([1, 2]));
fetch(url, {method: "POST", body: data}).then(//<more code>

В моем сериализаторе Django Rest Framework я определяю поле cargo следующим образом:

cargo = serializers.PrimaryKeyRelatedField(                                                     
    many=True, queryset=models.CustomCargo.objects.all()                                        
)                                                                                               

Я отправляю массив чисел, но DRF думает, что это массив строк, поэтому я получаю ошибку, потому что он ожидает целые числа (PrimaryKeyRelatedField). Мне нужно использовать multipart/form-data, потому что я отправляю файл, поэтому я не могу использовать application/json, который работает. Есть ли способ исправить это в коде JavaScript (я бы предпочел не преобразовывать строки в целые числа на бэкенде)?

В итоге я решил эту проблему, добавив каждый элемент массива в FormData отдельно в виде строк:

[1, 2].forEach((cargo) => data.append("cargo", cargo.toString()));

Если у кого-то есть понимание, почему это работает, пожалуйста, поделитесь.

Вернуться на верх