如何在 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' ] 默认。
希望对您有所帮助。
如果我有一个像这样的 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' ] 默认。
希望对您有所帮助。