如果我有一類觀點是這樣的,如何在Django-Rest-Framework中使用泛型進行PUT(部分更新)?
class MovieDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Movie.objects.all()
serializer_class = MovieSerializer
如何讓我的連載接受部分更新?目前它放置的位置將刪除所述對象的現有數據。
如果我有一類觀點是這樣的,如何在Django-Rest-Framework中使用泛型進行PUT(部分更新)?
class MovieDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Movie.objects.all()
serializer_class = MovieSerializer
如何讓我的連載接受部分更新?目前它放置的位置將刪除所述對象的現有數據。
如果您使用的是DRF路由,請使用PATCH
方法而不是PUT
。
如果你自己寫網址配置, 在你的RetrieveUpdateDestroyAPIView
視圖中調度它到partial_update
方法。
如果你自己的連載, 通過partial=True
到您的串行
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'。
希望它有幫助。