如何在 Django-Rest-Framework 中使用泛型进行 PUT(部分更新)?

How to do a PUT (partial update) using generics in Django-Rest-Framework?

如果我有一个像这样的 class 视图,

class MovieDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Movie.objects.all()
    serializer_class = MovieSerializer

如何让序列化接受部分更新?当前位置 Put 将删除所述对象的现有数据。

如果您使用的是 DRF 路线,请使用 PATCH 方法而不是 PUT

如果你自己写urls配置, 将它分派给 RetrieveUpdateDestroyAPIView 视图中的 partial_update 方法。

如果你自己获取连载, 将 partial=True 传递给您的 Serializer

partial = kwargs.pop('partial', False)
serializer = self.get_serializer(instance, data=request.data, partial=partial)

或者您可以将 get_serializer() 方法重写为:

  def get_serializer(self, *args, **kwargs):
        kwargs['partial'] = True
        return super(MovieDetail, self).get_serializer(*args, **kwargs)

前端小哥用AngularJS的ngResource调用你的API时特别有用,只支持'put',不支持'patch' ] 默认。

希望对您有所帮助。