【发布时间】:2014-07-20 09:58:55
【问题描述】:
我有一个使用 DRF 的序列化程序类:
class ItemSerializer(serializers.ModelSerializer):
categories = serializers.PrimaryKeyRelatedField(many=True)
我想通过 ajax 请求使用此序列化程序通过 RetrieveUpdateDestroyAPIView 更新模型实例的 categories。
var categories = [1,2,3];
$.ajax({
url : "/api/items/id",
type: 'POST',
headers: {
'X-HTTP-Method-Override': 'PUT'
},
// Form data
data : {
'categories':categories
}
});
不幸的是,我无法理解如何格式化 categories 参数。
我试过如上代码所示,参数没有传给序列化器,序列化器属性中categories字段为空。
在这种情况下,请求参数是一个列表,但名称是categories[] 而不是categories
我也尝试过JSON.stringify(categories),但在这种情况下,序列化程序不会验证错误:{"categories": ["Incorrect type. Expected pk value, received unicode."]}
我发现在这种情况下,请求参数值是一个字符串而不是一个列表。
另一方面,我可以通过 DRF 可浏览 api 执行 PUT 请求,在这种情况下,参数名为 categories,它的值是一个列表。
您知道我应该如何使用 ajax 发送参数,即发送参数,以便在请求参数中以列表形式存在,名称为 categories?
非常感谢!
【问题讨论】:
标签: javascript ajax django django-rest-framework