在 marshmallow 中使用 `fields.Nested` 只嵌套模式的一部分

use `fields.Nested` in marshmallow to only nest PART of the schema

所以当我尝试在 marshmallow 中使用 fields.Nested 时我有一个问题,我想使用 only 仅将部分架构提取到字段中,但它不起作用而且它也没有给我一个错误(这应该意味着它只能识别?),所以我不确定为什么。

棉花糖版本:3.0.0b11

class ChildSchema(Schema):
    attrA = fields.String(example="a"),
    
    attrB = fields.Integer(example=1),

class ParentSchema(Schema):
    attrC = fields.Nested(ChildSchema, only=["attrA"])

我期望的是:

"attrC":{
   "attrA": "a"
}

但是,我看到了:

"attrC":{
   "attrA": "a",
   "attrB": 1,
}

参考:https://marshmallow.readthedocs.io/en/3.0/nesting.html

我不清楚 example 在您的架构中做了什么。它不是 Schema 对象的参数。此外,还不清楚您是如何调用架构并尝试显示结果的。但是,以下会产生所需的结果:

from marshmallow import Schema, fields, pprint

class ChildSchema(Schema):
    attrA = fields.Str(example="a")
    attrB = fields.Integer(example=1)

class ParentSchema(Schema):
    attrC = fields.Nested(ChildSchema, only=['attrA'])

schema = ParentSchema()
result = schema.dump({'attrC': {'attrA': 'five', 'attrB': 5}})

pprint(result)
#{'attrC': {'attrA': 'five'}}