4
Django提供了序列化查詢集(django.core.serializers)的工具,但是如何序列化存在於其他對象(如字典)中的查詢集呢?序列化包含Django查詢集的對象
我想要序列以下字典:
dictionary = { 'alfa': queryset1, 'beta': queryset2, }
我決定做這個使用simplejson(自帶的Django)。 我延長simplejson.JSONEncoder方式如下:
from django.utils import simplejson
from django.core import serializers
class HandleQuerySets(simplejson.JSONEncoder):
""" simplejson.JSONEncoder extension: handle querysets """
def default(self, obj):
if isinstance(obj, QuerySet):
return serializers.serialize("json", obj, ensure_ascii=False)
return simplejson.JSONEncoder.default(self, obj)
然後我做的:simplejson.dumps(dictionary, cls=HandleQuerySets)
,但返回dicionary看起來是這樣的:
{ "alfa": "[{\"pk\": 1, \"model\": \"someapp.somemodel\", \"fields\": {\"name\": \"alfa\"}}]",
"beta": "[{\"pk\": 1, \"model\": \"someapp.somemodel\", \"fields\": {\"name\": \"alfa\"}}]" }
Django的生成JSON插入到字典中字符串,而不是JSON。我究竟做錯了什麼?
謝謝!我對django.core.serializers.json導入DjangoJSONEncoder'做了一些細微的修改,然後你可以擴展DjangoJSONEncoder而不是simplejson.JSONEncoder。然後,將HandleQuerySets中的最後一行更改爲'return DjangoJSONEncoder.default(self,obj)' – pifantastic 2011-09-07 21:55:40
先生,您是一位紳士和學者。 – 2012-03-28 00:25:58