如何将两个Marshmellow计划合而为一

时间:2019-04-04 20:16:23

标签: python marshmallow

我用棉花糖验证我的输出。我有两个棉花糖计划

class IdentitiesList(Schema):
    items = fields.List(fields.String, required=True)

class UsersListSchema(Schema):
    items = fields.Nested(UserDescriptionSchema, many=True)

出于多种原因,我将该方案组合成一个方案,在某些情况下,我的服务应返回字符串数组并使用第一个方案,在其他情况下,则应使用第二个方案。

有可能吗?否则我应该更改服务行为。

1 个答案:

答案 0 :(得分:0)

可能我的问题不清楚,但是我找到了解决方案。我创建了新的Schema类,其中重新加载了方法dump

class DetailedListSchema(Schema):
    """This schema serialize objects according input data"""
    def dump(self, obj, many=None, update_fields=True, **kwargs):
        if obj.get('items') == [] or (obj.get('items') and isinstance(obj['items'][0], UUID)):
            return IdentitiesList().dump(obj, many, update_fields, **kwargs)
        elif obj.get('items') and isinstance(obj['items'][0], User):
            return UsersListSchema().dump(obj, many, update_fields, **kwargs)
        else:
            raise ValueError