I have not tested this, since I myself am not using ViewSets, but I believe that you could do something like this:
In urls.py:
from django.conf.urls import url
from rest_framework import routers
from . import views
router = routers.SimpleRouter()
router.register(r'users', views.UserViewSet)
urlpatterns = [
url(r'^users/me/$', views.UserViewSet.as_view(), kwargs={'pk': 'me'}),
url(r'^', include(router.urls)),
]
In views.py:
from rest_framework import viewsets
from .models import User
from .serializers import UserSerializer
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
def get_object(self):
if self.kwargs.get('pk', None) == 'me':
self.kwargs['pk'] = self.request.user.pk
return super(UserViewSet, self).get_object()
Again, this is completely untested and completely theoretical, but something like that should work.
source
share