Search code examples
pythondjangodjango-rest-frameworkdjango-generic-views

override create method in django rest generics CreateAPIView


My views.py of django app is as below,

class MemberCreate(generics.CreateAPIView):
    queryset = members.objects.all()
    serializer_class = MemberSerializer
    permission_classes = (permissions.IsAdminUser,)

    def create(self, serializer):
        ''' I wanted to do some stuff with serializer.data here '''
        pass 

Here in the above if I override the create function the return is failing with following error, Even If I don't do any thing and just write pass it is failing ,

AssertionError: Expected a `Response`, `HttpResponse` or `HttpStreamingResponse` to be returned from the view, but received a `<class 'NoneType'>`

Solution

  • The return should be instanceof Response.You can return parent class response, after your stuff

    def create(self, request, *args, **kwargs):
        ''' I wanted to do some stuff with serializer.data here '''
        return super(MemberCreate, self).create(request, *args, **kwargs)
    

    or else if you don't want the parent response, then simply return a Response instance

    def create(self, request, *args, **kwargs):
        ''' I wanted to do some stuff with serializer.data here '''
        return Response(status=204)