【问题标题】:use `fields.Nested` in marshmallow to only nest PART of the schema在棉花糖中使用 `fields.Nested` 只嵌套部分模式
【发布时间】:2021-10-09 03:13:31
【问题描述】:

所以当我尝试在棉花糖中使用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

【问题讨论】:

    标签: python serialization schema field marshalling


    【解决方案1】:

    我不清楚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'}}
    

    【讨论】:

    • 示例是因为我使用的是swagger ui,但是我认为它不起作用的原因是因为我测试的方式错误。所以谢谢你告诉我如何测试它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多