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

07-26 03:33