2016-10-06 4 views
1

:どうすればよいマシュマロスキーマにパラメータを渡す方法を、私は、スキーマがある場合はPython、フラスコやマシュマロを、使用

class Parent(): 
    getChildren(self, params): 
     pass 

:メソッドを持ってい

class ParentSchema(Schema): 
    id = fields.Int(dump_only=True) 
    children = fields.Nested('ChildSchema', dump_only=True) 

とクラスParentをオブジェクトをシリアル化して結果をParentSchema.childrenに入力すると、マシュマロが必要なパラメータをParent.getChildrenに渡すのですか?

答えて

2

解決策は、get_attributeメソッドをスキーマクラスに追加し、ParentSchemaクラスのcontext属性にパラメータを割り当てることです。これは、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) 
関連する問題