Flask:Peewee model_to_dict 助手不工作
Flask: Peewee model_to_dict helper not working
我正在为一个大学项目开发一个小应用程序,我需要 json 对查询结果进行编码以将其传递给 js 库,我在其他地方读到过我可以使用 model_to_dict 来完成它,但我收到了这个错误
AttributeError: 'SelectQuery' object has no attribute '_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 方法将数据作为字典获取。这省略了创建整个模型的东西。
from flask import jsonify
@app.route('/ormt')
def orm():
doitch = Player.select().join(Nationality).where(Nationality.nation % 'Germany')
return jsonify(doitch.dicts().get())
编辑
正如@lord63 所指出的,你不能简单地return 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()
})
我正在为一个大学项目开发一个小应用程序,我需要 json 对查询结果进行编码以将其传递给 js 库,我在其他地方读到过我可以使用 model_to_dict 来完成它,但我收到了这个错误
AttributeError: 'SelectQuery' object has no attribute '_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 方法将数据作为字典获取。这省略了创建整个模型的东西。
from flask import jsonify
@app.route('/ormt')
def orm():
doitch = Player.select().join(Nationality).where(Nationality.nation % 'Germany')
return jsonify(doitch.dicts().get())
编辑
正如@lord63 所指出的,你不能简单地return 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()
})