Login

Convert a ValuesQuerySet to an array of dicts (useful for serializing)

Author:
waitinforatrain
Posted:
June 3, 2011
Language:
Python
Version:
1.3
Tags:
json serialization valuesqueryset
Score:
1 (after 1 ratings)

Perhaps this is blindingly obvious but I spent a while trying to get this, before figuring out that when a each item of an iterated ValuesQuerySet is a dict.

Useful for serialising to JSON or XML etc.

1
2
3
4
5
6
7
def ValuesQuerySetToDict(vqs):
    return [item for item in vqs]

# Usage
data=MyModel.objects.values('id','title','...','...')
data_dict = ValuesQuerySetToDict(data)
data_json = simplejson.dumps(data_dict)

More like this

  1. JSON encoding middleware by kcarnold 6 years, 10 months ago
  2. serialize model object with related objects to dict by zakovinko 4 years, 2 months ago
  3. JsonResponse by zakj 8 years ago
  4. Modelaware json serializer by fivethreeo 8 years, 1 month ago
  5. Improved YAML serializer for large databases by rspeer 6 years ago

Comments

siloraptor (on June 3, 2011):

Django provides native means of serialising it's models:

from django.core import serializers data = serializers.serialize("xml", SomeModel.objects.all())

https://docs.djangoproject.com/en/dev/topics/serialization/

#

waitinforatrain (on June 3, 2011):

@siloraptor That won't let you serialise a ValuesQuerySet result

#

rix (on June 3, 2011):

Why not converting to a list?

list(MyModel.objects.values('id','title','...','...'))

#

waitinforatrain (on June 5, 2011):

Didn't know you could do that. Dicts can be useful if you want to create more complex nested JSON.

#

Please login first before commenting.