Innovate anywhere, anytime Your cloud-based dev studio.

Understanding Django Serializers with Examples


Serializers are used for “translating” Django models into other formats like xmi,json,yaml(YAML Ain’t a Markup Language)

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()


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):

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

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

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

    if object_should_be_saved(deserialized_object):