我正在尝试序列化以下视图
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序列化程序需要整个模型
答案 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")