为什么 Marshmallow return 是多个项目,但 return 是一个项目?
Why does Marshmallow return empty for multiple items but returns a single item?
我正在使用 Flask 和棉花糖构建一个 API 来格式化查询结果,但由于某种原因 Filter.query.all()
返回空,但是当我用 Filter.query.first()
替换它时 returns 第一个过滤器。我还仔细检查了我的数据库以确保有多个条目。有什么地方我做错了吗?
from Model import db, Filter
class FilterSchema(ma.Schema):
id = fields.Integer()
filter_schema = FilterSchema()
### returns list of all filters in Filter db
def get(self):
filters = Filter.query.all()
filters = filter_schema.dump(filters).data
return {'status': 'success', 'data': filters}, 200
returns:
{
"status": "success",
"data": {}
}
同时 Filter.query.first()
returns:
{
"status": "success",
"data": {
"id": 1
}
}
事实证明,对于 marshmallow 中的模式,您需要指定该模式是否正在转储多个条目。当有多个时,将 many=True
添加到您的 FilterSchema()
:
即:filter_schema = FilterSchema(many=True)
或者更好的是,添加一个名为
filters_schema = FilterSchema(many=True)
并根据您要返回的数据选择使用哪一个。
我正在使用 Flask 和棉花糖构建一个 API 来格式化查询结果,但由于某种原因 Filter.query.all()
返回空,但是当我用 Filter.query.first()
替换它时 returns 第一个过滤器。我还仔细检查了我的数据库以确保有多个条目。有什么地方我做错了吗?
from Model import db, Filter
class FilterSchema(ma.Schema):
id = fields.Integer()
filter_schema = FilterSchema()
### returns list of all filters in Filter db
def get(self):
filters = Filter.query.all()
filters = filter_schema.dump(filters).data
return {'status': 'success', 'data': filters}, 200
returns:
{
"status": "success",
"data": {}
}
同时 Filter.query.first()
returns:
{
"status": "success",
"data": {
"id": 1
}
}
事实证明,对于 marshmallow 中的模式,您需要指定该模式是否正在转储多个条目。当有多个时,将 many=True
添加到您的 FilterSchema()
:
即:filter_schema = FilterSchema(many=True)
或者更好的是,添加一个名为
filters_schema = FilterSchema(many=True)
并根据您要返回的数据选择使用哪一个。