I am ussing @detail_route on my viewsets.ModelViewSet.
class CompanyViewSet(viewsets.ModelViewSet):
queryset = Company.objects.all()
serializer_class
DRF does not handle nested routes by itself, you may handle it by hand or use an extension, like drf-nested-routers, but its outdated.
My advice : don't fight the framework, DRF is not good at playing with url-nested resources, do it another way.
So avoid it when you can...but sometimes it makes sense to nest resources or methods
So for your case to handle both the accounts/
url and accounts/{account_id}
you define another detail route.
You have already defined the one for accounts
so you just add another function with a different name and ensure to add the url_path
so you can get the account_id
variable.
@detail_route(methods=['get', ], permission_classes=[IsCompanyUserPermission, ])
def accounts(self, request, pk):
...
return Response(...)
@detail_route(methods=['get', ], permission_classes=[IsCompanyUserPermission, ],
url_path='^queues/(?P<account_id>[0-9]+)')
def account_detail(self, request, pk, account_id):
...
return Response(...)
This answer took this similar answer as a reference