copser
copser

Reputation: 2641

query api response for content

I have a create method in my ModelViewSet and after validating and cleaning the serializer I'm making a post request using requests library.

def create(self, request):
    serializer = MySerializer(data=request.data, context={'request': request})
    if serializer.is_valid():
        serializer.save()

        # post to remote server
        response = requests.post(
            url='{}/server'.format(settings.URL),
            json=do_some_cleaning(serializer.data)
        )
        logger.debug('response from server >>>>=%s', response.json)
        return Response({'response': response}, status=response.status_code, data=response.json)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

I need to check my response get the id and store it in the object, or if it's not there need to query it and check do i have it, I need this id so I can work on the PUT method. Can someone please explain me how can I achieve this.

Upvotes: 0

Views: 139

Answers (1)

Umair Mohammad
Umair Mohammad

Reputation: 4635

You need to call the json function to get response in json format. Something like

response = response.json()

Then you can fetch id from it like you would do from a dict object. Something like

id = response["id"]

Then you can update the same in your object. Like

object.field_name = id
object.save()

Upvotes: 1

Related Questions