序列化Django模型实例(带有值标记的查询集)

时间:2010-11-12 18:14:04

标签: django json

我正在尝试序列化以下视图

def headerimage(request):

service_view = list( Service_images.objects.filter(service='7'))


return render_to_response ('headerimage.html',{'service_view':service_view}, context_instance=RequestContext(request))

这应该以下面显示的形式返回JSON

{"folderList":
    ["with schmurps"],
 "fileList":
    ["toto006.jpg",
     "toto012.jpg",
     "toto013.jpg"
    ]
}

然而,文件夹列表可以是一个,或者在这种情况下将是“7”,因为它是图像的标题(“文件夹”)。

考虑到下面的答案后,我想出了

def headerimage(request):

service_view =  Service_images.objects.filter(service='7')
image = serializers.serialize("json", service_view)

mini = list(serializers.deserialize("json", image))


return HttpResponse(image, mimetype='application/javascript')

然而,我仍在寻找最简单的方法

service_view =  Service_images.objects.filter(service='7').values('image')

问题是django序列化程序需要整个模型

2 个答案:

答案 0 :(得分:1)

Service_images.objects.filter()将为您返回一个QuerySet对象,因此基本上将其包装到list()中是没有意义的......

查看文档:{​​{3}},然后使用LazyEncoder定义。

答案 1 :(得分:0)

当json格式要求与我的模型表示不匹配时,我通常遵循以下方式。

from django.utils import simplejson as json

def headerimage(request):

    service_view =  Service_images.objects.filter(service='7')

    ret_dict = {
       "folderList":
          [sv.image.folder for sv in service_view],
       "fileList":
          [sv.image.file for sv in service_view]
    }
    return (json.dumps(ret_dict), mimetype="application/json")