使用Python,Flask和marshmallow,如果我有一个架构:
class ParentSchema(Schema):
id = fields.Int(dump_only=True)
children = fields.Nested('ChildSchema', dump_only=True)
和一个类Parent
,它有一个方法:
class Parent():
getChildren(self, params):
pass
在序列化对象时,如何让Marshmallow将必要的参数传递给Parent.getChildren
,然后用结果填充ParentSchema.children
?
答案 0 :(得分:2)
因此,解决方案是向架构类添加get_attribute
方法,并将参数分配给context
类的ParentSchema
属性。这改变了Marshmallow在构建模式时用于提取类属性的默认行为。
class ParentSchema(Schema):
id = fields.Int(dump_only=True)
children = fields.Nested('ChildSchema', dump_only=True)
def get_attribute(self, key, obj, default):
if key == 'children':
return obj.getChildren(self.context['params'])
else:
return getattr(obj, key, default)