我正在为大学项目开发一个小应用程序,我需要对查询结果进行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)
最佳答案
这是因为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()
})