【发布时间】:2019-07-10 08:08:50
【问题描述】:
在Marshmallow 中有一个可以使用的列表字段:
include_in = fields.List(cls_or_instance=fields.Str(),
default=['sample1', 'sample2'])
这没关系,但我有一个新要求,即在字段中包含字典列表。一个样本载荷:
[{
"name": "Ali",
"age": 20
},
{
"name": "Hasan",
"age": 32
}]
此有效负载是更大架构的一部分,所以现在的问题是我应该如何添加和验证这样的字段?
EDIT-1:
我更进一步,可以发现Marshmallow 中有一个Dict 字段类型,所以到目前为止我有以下代码示例:
fields.List(fields.Dict(
keys=fields.String(validate=OneOf(('name', 'age'))),
values=fields.String(required=True)
))
现在出现了新问题,我无法为字典中的字段设置不同的数据类型(name 和age)。如果有人能对此有所了解,我会很高兴。
【问题讨论】:
-
您可能想查看github.com/Bachmann1234/marshmallow-polyfield 或github.com/marshmallow-code/marshmallow-oneofschema,它们都实现了多态字段,即您可以为不同的数据形状使用不同的模式。
标签: python nested marshmallow data-class