使用输入参数对 marshmallow 进行验证
Using input parameters for validation with marshmallow
是否可以将参数传递给棉花糖模式以用于加载验证?
我有以下架构:
from marshmallow import Schema, fields, validate
class ExampleSchema(Schema):
tags = fields.List(fields.String(), validate=ContainsOnly(["a", "b", "c"]))
我想知道是否可以在其中输入参数而不是键入 "a", "b", "c"
?像
class ExampleSchema(Schema, list_of_allowed_tags):
tags = fields.List(fields.String(), validate=ContainsOnly(list_of_allowed_tags))
除非这不起作用,因为导入时会出现以下错误
NameError: name 'list_of_allowed_tags' is not defined
还有其他想法吗?
不,marshmallow Schema 不会那样做。
您可以使用模式工厂。
import marshmallow as ma
def example_schema_factory(list_of_allowed_tags):
class ExampleSchema(ma.Schema):
tags = ma.fields.List(
ma.fields.String(),
validate=ma.validate.ContainsOnly(list_of_allowed_tags)
)
return ExampleSchema
请看下面link的答案:
是否可以将参数传递给棉花糖模式以用于加载验证?
我有以下架构:
from marshmallow import Schema, fields, validate
class ExampleSchema(Schema):
tags = fields.List(fields.String(), validate=ContainsOnly(["a", "b", "c"]))
我想知道是否可以在其中输入参数而不是键入 "a", "b", "c"
?像
class ExampleSchema(Schema, list_of_allowed_tags):
tags = fields.List(fields.String(), validate=ContainsOnly(list_of_allowed_tags))
除非这不起作用,因为导入时会出现以下错误
NameError: name 'list_of_allowed_tags' is not defined
还有其他想法吗?
不,marshmallow Schema 不会那样做。
您可以使用模式工厂。
import marshmallow as ma
def example_schema_factory(list_of_allowed_tags):
class ExampleSchema(ma.Schema):
tags = ma.fields.List(
ma.fields.String(),
validate=ma.validate.ContainsOnly(list_of_allowed_tags)
)
return ExampleSchema
请看下面link的答案: