Perhaps try doing something similar instead in views.py ?
from rest_framework import generics, mixins, permissions User = get_user_model() class UserIsOwnerOrReadOnly(permissions.BasePermission): def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_METHODS: return True return obj.id == request.user.id class UserProfileChangeAPIView(generics.RetrieveAPIView, mixins.DestroyModelMixin, mixins.UpdateModelMixin): permission_classes = ( permissions.IsAuthenticated, UserIsOwnerOrReadOnly, ) serializer_class = UserProfileChangeSerializer parser_classes = (MultiPartParser, FormParser,) def get_object(self): username = self.kwargs["username"] obj = get_object_or_404(User, username=username) return obj def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs)
This will give you all the existing data for the user based on the username provided in the URL. If the username does not exist, it will result in a 404 error. You can also update or delete the object.
source share