我设置了Django Rest框架,我希望能够向其发送更新特定字段的PATCH请求。我查看了之前的一些帖子,并在我的视图中加入了partial update
代码:
class RequestViewSet(viewsets.ModelViewSet):
queryset = Request.objects.filter(done = False).order_by('-time')
serializer_class = RequestSerializer
paginate_by = None
def partial_update(self, request, *args, **kwargs):
kwargs['partial'] = True
return self.update(request, *args, **kwargs)
但是,当我尝试使用PATCH运行curl请求时,该对象不会更新。这是我正在使用的卷曲的一个例子:
curl --data '{"request": "foo"}' -X PATCH http://127.0.0.1:8000/api/request/1/
在终端中,它返回原始未修改的对象。是否有不同的方法来设置模型视图集以通过PATCH接受部分更新?
答案 0 :(得分:1)
在意识到我要参加聚会多久之前,我对OP进行了评论...但是我确实知道了。似乎DRF的curl语法有点挑剔。
经过多次实验,我发现这可行。 (是的,XPATCH
是一个词):
curl -XPATCH -H 'Content-Type:application/json' --data '{"request": "foo"}' \
http://127.0.0.1:8000/api/request/1/
答案 1 :(得分:0)
如果您不希望弄乱内容类型的内容,则可能会发现它起作用(请注意,不需要XPATCH
)
curl -X PATCH --data 'published=True' \
http://127.0.0.1:8000/api/rest/v3/visualizations/14/
至少在我看来,在命令行上使用--data
标志更加干净。