如何使用Django-Rest-Framework中的泛型进行PUT(部分更新)? [英] How to do a PUT (partial update) using generics in Django-Rest-Framework?

查看:1491
本文介绍了如何使用Django-Rest-Framework中的泛型进行PUT(部分更新)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有类似于这样的类视图,

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

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

解决方案

如果您使用DRF路由,请改用 PATCH

$ b

如果您自己编写网址配置,
将其发送到 partial_update 方法在您的 RetrieveUpdateDestroyAPIView 视图。



如果你得到序列化通过自己,
partial = True 传递给您的Serializer

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


If I have a class view that looks like this,

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

how do I make the serialize accept partial updates? currently where it stands Put will erase an existing data for said object.

解决方案

If you are using the DRF route, use PATCH method instead of PUT.

if you write the urls configuration by yourself, dispatch it to partial_update method in your RetrieveUpdateDestroyAPIView view.

If you get the serialize by yourself, pass the partial=True to your Serializer

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

这篇关于如何使用Django-Rest-Framework中的泛型进行PUT(部分更新)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆