[Answered ]-How can I update specific field after retrieved in django rest framework

1👍

If you want your field to be incremented only on a GET request, you can update it in the retrieve method:

# views.py
class ArticleDetail(generics.RetrieveUpdateAPIView):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

    def retrieve(self, request, *args, **kwargs):
        instance = self.get_object()
        instance.view = instance.view + 1
        instance.save()
        serializer = self.get_serializer(instance)
        return Response(serializer.data)

If you want it to be incremented with both GET and PATCH, you could update it in get_object instead:

# views.py
class ArticleDetail(generics.RetrieveUpdateAPIView):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer

    def get_object(self):
        instance = super(ArticleDetail, self).get_object()
        instance.view = instance.view + 1
        instance.save()
        return instance

Leave a comment