反序列化时的 Marshmallow 字段查找

发布于 2025-01-12 17:11:07 字数 428 浏览 1 评论 0原文

是否可以使用 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

Is it possible to perform input data lookups with marshmallow schemas ? The following does not work.. :

class ParentSchema(Schema):
    child_name = fields.String(data_key="child.fname")

Then during deserialisation:

data = {"child": {"fname": "John", "lname": "Doe"}}
ParentSchema().load(data)

The result is {}.

marshmallow-v3.14.1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

盗梦空间 2025-01-19 17:11:07

您可以使用 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'}

You can achieve this using 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)

And the result is {'child_name': 'John'}.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文