Examples of serialized objects

Examples of data serialized with Django's ​serialization framework.

These all use the Poll example from ​tutorial 1:

    from django.db import models

    class Poll(models.Model):
        question = models.CharField(maxlength=200)
        pub_date = models.DateTimeField('date published')

    class Choice(models.Model):
        poll = models.ForeignKey(Poll)
        choice = models.CharField(maxlength=200)
        votes = models.IntegerField()

XML

Though it's the most verbose, the XML format is considered somewhat canonical; all the other formats leave out some of the aspects of the XML format:

<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
  <object pk="1" model="myapp.poll">
    <field type="CharField" name="question">What is your favorite color?</field>
    <field type="DateTimeField" name="pub_date">2007-06-06 11:23:42</field>
  </object>
  <object pk="2" model="myapp.poll">
    <field type="CharField" name="question">What's your favorite web framework?</field>
    <field type="DateTimeField" name="pub_date">2007-06-06 11:24:17</field>
  </object>
  <object pk="1" model="myapp.choice">
    <field to="myapp.poll" name="poll" rel="ManyToOneRel">1</field>
    <field type="CharField" name="choice">Red</field>
    <field type="IntegerField" name="votes">5</field>
  </object>
  <object pk="2" model="myapp.choice">
    <field to="myapp.poll" name="poll" rel="ManyToOneRel">1</field>
    <field type="CharField" name="choice">Blue</field>
    <field type="IntegerField" name="votes">1</field>
  </object>
  <object pk="3" model="myapp.choice">
    <field to="myapp.poll" name="poll" rel="ManyToOneRel">1</field>
    <field type="CharField" name="choice">Pink... no, yellow...</field>
    <field type="IntegerField" name="votes">3</field>
  </object>
  <object pk="4" model="myapp.choice">
    <field to="myapp.poll" name="poll" rel="ManyToOneRel">2</field>
    <field type="CharField" name="choice">Django</field>
    <field type="IntegerField" name="votes">1000000</field>
  </object>
  <object pk="5" model="myapp.choice">
    <field to="myapp.poll" name="poll" rel="ManyToOneRel">2</field>
    <field type="CharField" name="choice">Rails</field>
    <field type="IntegerField" name="votes">0</field>
  </object>
</django-objects>

JSON

Though XML is canonical, ​JSON is probably more useful for everyday use. There's not a lot of metadata, but if you know what the objects are, it works great.

[
  {
    "pk": "1", 
    "model": "se.poll", 
    "fields": {
      "pub_date": "2007-06-06 11:23:42", 
      "question": "What is your favorite color?"
    }
  }, 
  {
    "pk": "2", 
    "model": "se.poll", 
    "fields": {
      "pub_date": "2007-06-06 11:24:17", 
      "question": "What's your favorite web framework?"
    }
  }, 
  {
    "pk": "1", 
    "model": "se.choice", 
    "fields": {
      "votes": 5, 
      "poll": 1, 
      "choice": "Red"
    }
  }, 
  {
    "pk": "2", 
    "model": "se.choice", 
    "fields": {
      "votes": 1, 
      "poll": 1, 
      "choice": "Blue"
    }
  }, 
  {
    "pk": "3", 
    "model": "se.choice", 
    "fields": {
      "votes": 3, 
      "poll": 1, 
      "choice": "Pink... no, yellow..."
    }
  }, 
  {
    "pk": "4", 
    "model": "se.choice", 
    "fields": {
      "votes": 1000000, 
      "poll": 2, 
      "choice": "Django"
    }
  }, 
  {
    "pk": "5", 
    "model": "se.choice", 
    "fields": {
      "votes": 0, 
      "poll": 2, 
      "choice": "Rails"
    }
  }
]

YAML

Only available if ​PyYAML is installed, this holds mostly the same data as the JSON serializer. However, YAML's probably easier to write by hand, so it's the most useful for fixtures.

- model: se.poll
  pk: '1'
  fields: 
      pub_date: !!timestamp '2007-06-06 11:23:42'
      question: 'What is your favorite color?'
- model: se.poll
  pk: '2'
  fields: 
      pub_date: !!timestamp '2007-06-06 11:24:17'
      question: 'What''s your favorite web framework?'
- model: se.choice
  pk: '1'
  fields: 
    choice: Red
    poll: 1
    votes: 5
- model: se.choice
  pk: '2'
  fields: 
      choice: Blue
      poll: 1
      votes: 1
- model: se.choice
  pk: '3'
  fields: 
      choice: 'Pink... no, yellow...'
      poll: 1
      votes: 3
- model: se.choice
  pk: '4'
  fields: 
      choice: Django
      poll: 2
      votes: 1000000
- model: se.choice
  pk: '5'
  fields: 
      choice: Rails
      poll: 2
      votes: 0
Last modified 19 years ago Last modified on Jun 6, 2007, 3:50:15 PM
Note: See TracWiki for help on using the wiki.
Back to Top