如何将两个 marshmellow 方案合二为一

How to unite two marshmellow schemes in one

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

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

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

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

可能吗?或者我应该改变我的服务行为。

可能是我的问题不清楚,但我找到了解决方案。我在重新加载方法 dump:

的位置创建了新架构 class
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