Я экспериментирую с 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
, я получаю сообщение об ошибке.Как правильно использовать схемы в этом случае?Или я их не правильно использую?