更新时 UpdateAPIView 中对象的一些操作

tim*_*tim 4 python django django-rest-framework

我的代码:

class CarView(generics.UpdateAPIView):
    permission_classes = (IsAdminUser,)
    serializer_class = CarSerializer

    def get_queryset(self):
        return ...

    def update(self, request, *args, **kwargs):
        # some actions
        return super(CarView, self).update(request, *args, **kwargs) 
Run Code Online (Sandbox Code Playgroud)

在更新方法中,我想对更新的对象进行一些操作。这该怎么做?

aww*_*ter 5

你可以用 self.get_object() 得到它

查看您正在覆盖的源 UpdateView。您可以使用相同的方法来获取对象:

class UpdateModelMixin(object):
    """
    Update a model instance.
    """
    def update(self, request, *args, **kwargs):
        partial = kwargs.pop('partial', False)
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data, partial=partial)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)
        return Response(serializer.data)

    def perform_update(self, serializer):
        serializer.save()

    def partial_update(self, request, *args, **kwargs):
        kwargs['partial'] = True
        return self.update(request, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)