Tobi
Tobi

Reputation: 43

SerializerMethodField - Access data from request body in Django Rest Framework

I have following view:

class KlarnaCNO(generics.UpdateAPIView):
    serializer_class = KlarnaCNOSerializer
    queryset = Group.objects.all()

And this serializer:

class KlarnaCNOSerializer(serializers.ModelSerializer):
    cnostring = serializers.SerializerMethodField()
    class Meta:
        model = Group     
   
    def get_cnostring(self, obj):
        ...
        TokenExt = obj.uniquekey
        ...
        return TokenExt

"uniquekey" is a value that is empty before I perform the PATCH-request with this value in body.

However the returned TokenExt will always stay empty. How can I access the POSTed uniquekey inside of this SerializerMethodField?

Upvotes: 1

Views: 1242

Answers (1)

VJ Magar
VJ Magar

Reputation: 1052

You can pass the request in the context of serializer. And then access it via serializer context.

#in viewset

class KlarnaCNO(generics.UpdateAPIView):
    serializer_class = KlarnaCNOSerializer
    queryset = Group.objects.all()

     def get_serializer_context(self):
          """Adds request to the context of serializer"""
          return {"request": self.request}

#in serializer
def get_cnostring(self, obj):
        #access request
        request = self.context.get("request")

       #  directly the uniquekey
       uniquekey = request.data.get("uniquekey")
        ... 

Upvotes: 2

Related Questions