DRF接收数字数组被解析为字符串的前端修复方案咨询
解决DRF接收multipart/form-data格式下数字数组被解析为字符串的问题
问题核心是你用JSON.stringify把数组转成字符串后,DRF会把这个字符串当成单个值处理,而PrimaryKeyRelatedField(many=True)需要的是多个独立的整数主键参数。在JS端可以通过以下方式修复:
- 不要将数组序列化为JSON字符串,而是多次调用FormData的append方法,使用同一个字段名传入数组中的每个数字。
修改后的JavaScript代码:
const data = new FormData(); // 遍历数组,逐个添加同名字段 [1, 2].forEach(cargoId => { data.append("cargo", cargoId); }); fetch(url, { method: "POST", body: data }).then(//<more code>
这样处理后,DRF会自动将多个cargo字段的值解析为整数数组,匹配PrimaryKeyRelatedField(many=True)的类型要求,不会再出现类型错误。如果你的数组是动态生成的,只需要遍历数组元素重复调用append即可。
内容的提问来源于stack exchange,提问作者Luciano
相关产品推荐
相关产品推荐

