我正在使用Django 1.9和Django Rest Framework 3.3。我有传入的POST请求,可以是dict
或list
,也可以访问相同的API端点。端点URL如下所示:/api/children/3/classes
。此3
表示孩子的ID。
我的传入POST请求如下所示:
{
"name": "Mathematics",
"teacher": "Mr. Kabbatt",
"school": "High School"
"child": 2
}
在这种情况下,我给了一个dict,但它也可以是一个dicts的数组(列表)。
如何强制Django Rest Framework 忽略在POST正文中设置的child
参数,仅使用URL中的参数?我使用ListCreateAPIView
泛型,我已经能够在child
方法中获取get_queryset()
参数。在序列化器方面,我使用DRF的简单ModelSerializer
并包含所有字段。
答案 0 :(得分:2)
如果我理解正确,您希望使用url提供的参数覆盖请求正文中的child
值。
def post(self, request, *args, **kwargs):
# django passes params from url in kwargs
# e.g. {id: 3} or {child: 3}, not sure what your url calls it
if request.data.__class__ is dict:
request.data['child'] = kwargs['id']
elif request.data.__class__ is list:
# dunno what your setup looks like here
for i in request.data:
request.data[i]['child'] = kwargs['id']
self.create(request, *args, **kwargs)