如何将两个 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
我使用 marshmallow 来验证我的输出。我有两个棉花糖计划
class IdentitiesList(Schema):
items = fields.List(fields.String, required=True)
class UsersListSchema(Schema):
items = fields.Nested(UserDescriptionSchema, many=True)
出于多种原因,我应该将这些方案合并为一个方案,在某些情况下,我的服务应该 return 字符串数组并使用第一种方案,在其他情况下,它应该使用第二种方案。
可能吗?或者我应该改变我的服务行为。
可能是我的问题不清楚,但我找到了解决方案。我在重新加载方法 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