How can I convert django serializer result to dict?

Viewed 23

I want to send result of django serializer with help of requests library

content = ParsingResultSerializer(instance=parsing_res, many=True).data # parsing_res is a 
django queryset
print("XXXX_ ", content, flush=True) 

# prints OrderedDict
[OrderedDict([('film_info', {'search_query': 'Джанго освобожденный', 'film': {'id': 8, 'suffixes': [], 'name': 'Джанго освобожденный', 'is_site_search': False, 'external_id': -1}}), ('url', 'https://kino-ep.net/4087-dzhango-osvobozhdennyy-2012.html'), ('priority', 21), ('search_request', 14317), ('page_checks', [OrderedDict([('id', 91845),

But I need a dict, because I want to send the dict like this:

response = requests.request("POST", url, headers=headers, data=content)

How can I convert django serializer result to dict?

I read about this way

from django.core import serializers
querydata = serializers.serialize("json",query)

but how can i use my ParsingResultSerializer?

Serializer code

class ParsingResultSerializer(serializers.ModelSerializer):
    page_checks = serializers.SerializerMethodField()
    task_info = serializers.SerializerMethodField('get_popularity')

    class Meta:
        model = ParsingResult
        fields = [
            'film_info'
            'url',
            'priority',
            'search_request',
            'page_checks',
            'created_at',
        ]
        read_only_fields = ("id", "film_info")
    
    def get_page_checks(self, obj):
        if obj.page_checks is not None:
            return PageFeatureCheckSerializer(obj.page_checks, many=True).data
        return None
1 Answers

In you example querydata is json. You can convert json to dict like this:

import json

from django.core import serializers
querydata = serializers.serialize("json",query)
querydata = json.loads(querydata). # This is Python dictionary 
Related