Как использовать схему зефира в качестве одного из проверенных веб-арг? - PullRequest
0 голосов
/ 09 октября 2018

Я экспериментирую с API во Flask (flask-restful) и использую webargs и marshmallow для сериализации аргументов из запроса POST.Аргументы выглядят так:

from webargs import fields, ValidationError
from app.core.utilities.helper_functions import raise_
from webargs.flaskparser import use_args
from marshmallow import Schema

comparators = ['not_exactly', 'exactly', '>=', '<=']


class ConfigSchema(Schema):
    comparator = fields.Str(required=True, validate=lambda x: True if x in comparators else
                            "Invalid comparator: {}. Allowed values: {}".format(x, comparators))
    value = fields.Str(required=True)

# config_schema = ConfigSchema()

bond_screen_args = {'config': fields.Dict(keys=fields.Str(validate=lambda x: True if len(x) > 0 else
raise_(ValidationError("Invalid factor name {}. Should be a non-zero length string.".format(x)))),
                                          values=fields.List(ConfigSchema, validate=lambda list_: True if
                                          (len(list_) >= 1 and len(list_) <= 2) else "Invalid number of screen "
                                          "options: {}. For floats, give two options at max, for string screen, "
                                          "give only one option.".format(list_)),
                                          required=True)}

Проблемной частью является ConfigSchema в valued=fields.List(ConfigSchema) части кода.Поскольку этот класс не относится к типу marshmallow.type.FieldsABC, я получаю сообщение об ошибке.Как правильно использовать схемы в этом случае?Или я их не правильно использую?

...