2016-10-06 11 views
1

: 어떻게멜로 스키마에 매개 변수를 전달하는 방법 내가 스키마가있는 경우 파이썬, 플라스크 및 마시멜로를 사용

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

: 방법이있다

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

및 클래스 Parent을 개체를 serialize 할 때 마쉬멜로우가 Parent.getChildren에 필요한 매개 변수를 전달한 다음 결과로 ParentSchema.children을 채 웁니까?

답변

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)