Почему Зефир возвращает пустой для нескольких элементов, но возвращает один элемент? - PullRequest
0 голосов
/ 26 марта 2020

Я строю API, используя Flask и зефир для форматирования результатов запроса, но по какой-то причине Filter.query.all() возвращает пустое значение, но когда я заменяю его на Filter.query.first(), он возвращает первый фильтр. Я также дважды проверил свою базу данных, чтобы убедиться, что есть несколько записей. Я что-то здесь не так делаю?

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

возвращает:

{
    "status": "success",
    "data": {}
}

, а Filter.query.first() возвращает:

{
    "status": "success",
    "data": {
        "id": 1
    }
}

1 Ответ

2 голосов
/ 26 марта 2020

Оказывается, для схемы в зефире необходимо указать, будет ли схема выводить несколько записей или нет. Если их несколько, добавьте many=True к вашему FilterSchema():

ie: filter_schema = FilterSchema(many=True)

или даже лучше, добавьте другую переменную с именем filters_schema = FilterSchema(many=True)

и выберите, какой из них использовать, в зависимости от данных, которые вы хотите вернуть.

...