Understanding django serializers with examples

Using Serializers,  we can translate Django model objects into other formats like XML, JSON, YAML(YAML Ain’t a Markup Language) with a single command.

from django.core import serializers

data = serializers.serialize("xml", SomeModel.objects.all())

the first argument will be the format we want to serialize the data and second will be a QuerySet to serialize.

we can also translate using a serializer object directly

XMLSerializer = serializers.get_serializer("xml")

xml_serializer = XMLSerializer()

xml_serializer.serialize(queryset)

data = xml_serializer.getvalue()

this is useful when we want data directly be a file like object.

we can also translate only subset of fields using fields argument 

from django.core import serializers

data = serializers.serialize('xml', SomeModel.objects.all(), fields=('name','size')) class Teacher(models.Model):

    name = models.CharField(max_length=50)

    qualification = models.CharField(max_length=50)        

class College(Teacher):

    name = models.models.CharField(max_length=50)

for the inherited models,to translate child class objects we have to list all parent class objects and child class objects into single list,then translate.

all_objects = list(Teacher.objects.all()) + list(College.objects.all())

data = serializers.serialize('xml', all_objects)

Deserializing data:

for obj in serializers.deserialize("xml", data):
    do_something_with(obj)

it will take same arguments as serialize function and returns an iterator

The objects returned by the deserialize iterator are unsavedobjects and Calling DeserializedObject.save() saves the object to the database.


for deserialized_object in serializers.deserialize("xml", data):

    if object_should_be_saved(deserialized_object):

        deserialized_object.save()

Posted On 14 August 2013 By MicroPyramid


Need any Help in your Project?Let's Talk

Latest Comments
Related Articles
How to Create initial django migrations for existing DB schema.

Django provides the comfort database migrations from its version 1.8, with which we can avoid the usage of third party packages like south. Adding migrations ...

Continue Reading...
Django webpacker - A compression tool to bundles css, js files

django-webpacker is a django compressor tool which bundles css, js files to a single css, js file with webpack and updates your html files with ...

Continue Reading...
Improving page speed score in Google Page Score test- PART2

In our previous blog post we got an idea of what are the things that Google's Page Speed Insights will take into count to give ...

Continue Reading...
open source packages

Subscribe To our news letter

Subscribe and Stay Updated about our Webinars, news and articles on Django, Python, Machine Learning, Amazon Web Services, DevOps, Salesforce, ReactJS, AngularJS, React Native.
* We don't provide your email contact details to any third parties