1
我试着采用了棱角分明的$ HTTP的DRF进行部分更新正确的HTTP动词。什么是Django的REST partial_update
在我的DRF模型视图集我重写partial_update
功能(服务器端)。
class AnimalTreatmentViewSet(viewsets.ModelViewSet):
queryset = MyObject.objects.all()
serializer_class = MyObjectSerializer
def create(self, request):
# It works with $http.post()
pass
def update(self, request, pk=None):
# It works with $http.put()
pass
def list(self, request):
# It works with $http.get()
pass
def partial_update(self, request, pk=None):
# This one wont work with $http.patch()
instance = self.get_object()
serializer = self.serializer_class(instance, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
在客户端角度处理用户请求。
$http.patch('/api/my_viewset_url/1', data);
但我得到这个响应不允许的方法(补丁):/ API/my_viewset_url/1
当使用
$http.get()
要求与DRF模型视图集中list(self, request)
它运作良好,为获得相同的列表无二$http.post()
与def create(self, request)
与def update(self, request)
更新对象创建对象和$http.put()
。
怎么了?或者是什么DRF模型正确的HTTP动词用于partial_update视图集中
你使用的是模型视图吗?哪些mixins?你可以分享视图的其余部分吗?谢谢!! – bobleujr
即时通讯使用modelviewset,谢谢你的回应! –
@bobleujr我更新了我的问题 –