【问题标题】:Django rest framework partial update (PATCH)Django rest 框架部分更新(补丁)
【发布时间】:2021-07-27 21:59:36
【问题描述】:

我正在尝试对用户进行部分更新,以便并非所有字段都应在请求中发送。为此,我创建了一个这样的视图:

elif request.method == 'PATCH':
    user_serializer = UserSerializer(user, data=request.data, partial=True)
    if user_serializer.is_valid():
        user_serializer.save()
        return Response({'message': 'User updated correctly'}, status=status.HTTP_200_OK)
    else:
        return Response(user_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我看到如果激活了partial = True参数那么它会调用序列化器的partial_update()函数,但是它没有:

def partial_update(self, request, *args, **kwargs):
    print("partial update")

那么,我该如何执行 partial_update 来更新用户字段?

【问题讨论】:

    标签: python django rest


    【解决方案1】:

    尝试将序列化程序分配给视图:

    serializer_class = UserSerializer
    

    然后就可以从视图实例中获取序列化器了:

    user_serializer = self.get_serializer(user, data=request.data, partial=True)
    user_serializer.save()
    

    最后partial_update 方法应该在视图级别触发。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2020-04-16
      相关资源
      最近更新 更多