Django休息框架APIView补丁

时间:2016-06-15 23:17:01

标签: django django-rest-framework

我需要使用code中的patch方法更新APIView字段。

到目前为止,我有这个:

class UserDetailView(APIView):

    def patch(self, request, user_id):
        user = User.objects.get(id=user_id)

        serializer = UserSerializerRead(user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(status=HTTP_204_NO_CONTENT)

        return Response(status=HTTP_400_BAD_REQUEST)

并且请求将是:

[{"action": "replace", "path": "/code", "value": "2"}]

我不明白补丁是如何工作的,这不会改变code

有人可以给我一些代码吗?

1 个答案:

答案 0 :(得分:3)

PATCH动词类似于POSTPUT,但如果它们丢失则会跳过必填字段。

如果UserSerializerRead可以更新User实例,则您的请求将是:

{'code': 2}

否则,您必须使用特定的序列化程序来解析action / path / value