I am particularly interested in using ModelViewSet
for solving the challenge of updating the logged in user's profile. I am using the following definition:
from rest_framework import viewsets
class ProfileRetrieveUpdate(viewsets.ModelViewSet):
serializer_class = UserProfileSerializer
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def get_queryset(self):
return UserProfile.objects.filter(user=self.request.user)
def perform_update(self, serializer):
serializer.save(user=self.request.user)
By overriding get_queryset
, I am able to get the expected behavior, i.e. when I access the endpoints (say profile/
), I get the profile of the logged in user. However, if I have to update the profile, I can only access PUT
by going to profile/6/
. Is there a way I can get ModelViewSet
to expose PUT
at the same endpoint i.e. profile/
?