反序列化时的 Marshmallow 字段查找
Marshmallow field lookup on deserialisation
是否可以使用 marshmallow
模式执行输入数据查找?以下不起作用.. :
class ParentSchema(Schema):
child_name = fields.String(data_key="child.fname")
然后在反序列化过程中:
data = {"child": {"fname": "John", "lname": "Doe"}}
ParentSchema().load(data)
结果是{}
。
marshmallow-v3.14.1
您可以使用 fields.Function
实现此目的:
class ParentSchema(Schema):
child_name = fields.Function(data_key="child",
deserialize=lambda child: child["fname"])
data = {"child": {"fname": "John", "lname": "Doe"}}
ParentSchema().load(data)
结果是{'child_name': 'John'}
。
是否可以使用 marshmallow
模式执行输入数据查找?以下不起作用.. :
class ParentSchema(Schema):
child_name = fields.String(data_key="child.fname")
然后在反序列化过程中:
data = {"child": {"fname": "John", "lname": "Doe"}}
ParentSchema().load(data)
结果是{}
。
marshmallow-v3.14.1
您可以使用 fields.Function
实现此目的:
class ParentSchema(Schema):
child_name = fields.Function(data_key="child",
deserialize=lambda child: child["fname"])
data = {"child": {"fname": "John", "lname": "Doe"}}
ParentSchema().load(data)
结果是{'child_name': 'John'}
。