Django错误将查询输出序列化为JSON

时间:2011-02-27 06:51:24

标签: django json

您好 我正在尝试使用Django创建一个将从某个关键字搜索数据库的页面,我已设法在数据库中搜索关键字,但现在我需要将数据序列化为JSON格式的数组,以便我可以使用它客户端使用JavaScript。

当我尝试序列化我的结果数组时,我收到此错误:

  

'dict'对象没有属性'_meta'

我的代码如下所示:

def SearchItems(request, itemName):
    items_list = list(Item.objects.filter(name = itemName).values())

    json_serializer = serializers.get_serializer("json")()
    data = json_serializer.serialize(items_list, ensure_ascii=False)

    return HttpResponse(data)

任何帮助将不胜感激, RayQuang

2 个答案:

答案 0 :(得分:2)

尝试这样做,而不是使用序列化器:

return HttpResponse(simplejson.dumps(items_list),'application/json'))

请参阅this answer了解详情

答案 1 :(得分:0)

不要将对象转换为dict。 只需将查询集传递给序列化程序:

json_serializer.serialize(Item.objects.filter(name=itemName), ensure_ascii=False)

或者,您可以直接使用json / cjson / anyjson序列化程序:

import anyjson
HttpResponse(anyjson.serialize(Item.objects.filter(name=itemName).values()), content_type="application/json")