【发布时间】:2016-02-11 23:53:13
【问题描述】:
我们使用序列化程序来验证进入我们的非基于模型的服务方法的数据。这当然适用于作为 JSON 的 POST,但如果 query_params 中的内容不复杂(不是列表或嵌套),通常也适用于 GET。但是,如果我有这样的事情:
class RequestSerializer(Serializer):
objects = ListField(child=PrimaryKeyRelatedField(queryset=Foo.objects.all()), allow_empty=False)
choice = ChoiceField(choices=my_choices)
在客户端我只使用这样的 GET:
$.ajax({
type: "GET",
url: '...',
data={
"objects":[1,2,3],
"choice":"mychoice"
...
如果我使用 POST 而不是 GET 并将 contentType 设置为“application/json”,则此方法有效,但 HTTP spec 不宽恕这种做法。能够处理简单的列表用例而不做类似的事情会很好:
request_serializer = RequestSerializer(data={"objects" :request.query_params.getlist("objects[]")})
我是否缺少一些明显的序列化程序技巧,告诉序列化程序如何在不手动调用 request.getlist 的情况下获取列表(objects=x&objects=y&objects=z)?其他人为此做了什么,这似乎是一个常见的用例?
编辑: 我之前确实找到了this post,但接受的答案是使用 request.getlist 这不是我想要的。
【问题讨论】:
标签: json django http django-rest-framework