我正在为一个大学项目开发一个小应用程序,我需要json对查询结果进行编码以将其传递给js库,我已经在其他地方读过我可以使用model_to_dict来完成该任务,但我收到此错误
AttributeError:' SelectQuery'对象没有属性' _meta'
我不知道为什么或做什么,有谁知道如何解决这个问题?
我使用python 2.7和peewee的最后一个版本
@app.route('/ormt')
def orm():
doitch = Player.select().join(Nationality).where(Nationality.nation % 'Germany')
return model_to_dict(doitch)
答案 0 :(得分:3)
这是因为doitch
是SelectQuery
个实例,它不是模型,您必须致电get()
from flask import jsonify
@app.route('/ormt')
def orm():
doitch = Player.select().join(Nationality).where(Nationality.nation % 'Germany')
return jsonify(model_to_dict(doitch.get()))
此外,您可以使用dicts方法将数据作为dict获取。这省略了创建整个模型的东西。
from flask import jsonify
@app.route('/ormt')
def orm():
doitch = Player.select().join(Nationality).where(Nationality.nation % 'Germany')
return jsonify(doitch.dicts().get())
修改强>
正如@ lord63指出的那样,你不能简单地返回dict,它必须是Flask响应,所以将它转换为jsonify。
编辑2
@app.route('/ormt')
def orm():
doitch = Player.select().join(Nationality).where(Nationality.nation % 'Germany')
# another query
sth = Something.select()
return jsonify({
'doitch': doitch.dicts().get(),
'something': sth_query.dicts().get()
})