将Django查询集序列化为JSON:获取AttributeError' tuple'对象没有属性' _meta'

时间:2015-04-14 14:06:33

标签: python django

我正在使用Django 1.8。这是我的观点:

from django.http import JsonResponse

...
query = "SELECT * FROM frontend_chemical WHERE id LIKE %s"
cursor.execute(query, (code + "%",))
data = cursor.fetchall()
print data
return JsonResponse(serializers.serialize('json', data), safe=False)

但是这给了我:

AttributeError at /api/1.0/bnf_code: 'tuple' object has no attribute '_meta'

在这一行:

return JsonResponse(serializers.serialize('json', data), safe=True) 

在控制台中,我可以看到我的数据已经返回OK:

[(u'0210', u'Stable angina, acute coronary syndromes, and fibrinolysis'), (u'0211', u'Antifibrinolytic drugs and haemostatics'), (u'0212', u'Lipid-regulating drugs'), (u'0213', u'Local sclerosants')]

知道可能出现什么问题吗?

更新:我一直在尝试使用data = dictfetchall(cursor) as described here将数据作为字典。

然而,这只是在同一个地方失败,但错误略有不同:

AttributeError: 'dict' object has no attribute '_meta'

1 个答案:

答案 0 :(得分:1)

序列化程序仅用于序列化django模型。要序列化简单的python数据,请使用内置的json模块:

import json

return JsonResponse(json.dumps(data), safe=True)