I am trying to use Django Rest Framework to perform an additional action from a viewset. In the urls I have:
router = SimpleRouter()
router.register(r'mymodels', MyModelViewSet, basename='mymodel')
urlpatterns = [
url(r'', include(router.urls)),
]
And in views.py
:
class MyModelViewSet(ListModelMixin, GenericViewSet):
serializer_class = MyModelSerializer
So I can send GET /mymodel/
request. I would like to be able to send PATCH /mymodel/
, but I don't know how to configure the action. Currently I have:
class MyModelViewSet(ListModelMixin, GenericViewSet):
serializer_class = MyModelSerializer
allowed_http_methods = ['get', 'patch']
@action(methods=['patch'], detail=False, url_path='', suffix='')
def some_action(self, request: Request) -> Response:
# do some stuff
return Response()
However, I have 405 method not allowed
response. I can send data with PATCH /mymodel/some-action/
, but I need to get rid of the last part of the url path.