Search code examples
djangopostdjango-modelsdjango-rest-frameworkdjango-rest-viewsets

Can you get the request method in a DRF ModelViewSet?


I am building a Django chat app that uses Django Rest Framework. I created a MessageViewSet that extends ModelViewSet to show all of the message objects:

class MessageViewSet(ModelViewSet):
    queryset = Message.objects.all()
    serializer_class = MessageSerializer

This chat app also uses Channels and when a user sends a POST request, I would like to do something channels-realted, but I can't find a way to see what kind of request is made. Is there any way to access the request method in a ModelViewSet?


Solution

  • Rest Framework viewsets map the http methods: GET, PUT, POST, and DELETE to view methods named list, update, create, and destroy respectively; so in your case, you would need to override the create method:

    class MessageViewSet(ModelViewSet):
        queryset = Message.objects.all()
        serializer_class = MessageSerializer
    
        def create(self, request):
            print('this is a post request', request)
            ...