python - 嵌套中的Python棉花糖参数
问题描述
我一直在使用图书馆很短的时间。我一直在寻找,但我无法解决问题。
我有两个架构:
class SonSchema(Schema):
paramter1 = fields.Str
parameter2 = fields.Str
class FatherSchema(Schema):
son = fields.Nested(SonSchema)
然后我有加载功能:
flag = True
schema = FatherSchema().load(response)
我需要的是取决于 SonSchema 中的参数 Flag 验证某些参数,例如如果 flag = True 则 parameter1 需要在响应中(带有@validation_schema)。
我真的不知道如何在架构实例中传递参数来获取 SonSchema。你有什么想法?
解决方案
Jérôme 的回答是正确的,但是如果您只想使用一种模式来验证某些情况,您可以随时设置模式上下文,然后在验证方法中根据上下文中的标志检查您想要的内容:
class SonSchema(Schema):
parameter1 = fields.Str()
parameter2 = fields.Str()
@validates_schema
def validate_parameters(self, data, **kwargs):
is_flag = self.context.get('flag', False)
print(self.context)
# Parameters validation based on flag
您可以为 FatherSchema 设置上下文,您将能够在子嵌套模式中使用它:
schema = FatherSchema(context={'flag': True})
data = {'son': {'parameter1': 'parameter1 value', 'parameter2': 'parameter2 value'}}
schema.load(data)
推荐阅读
- python - ROS2 + Qt:有什么好的解决方案吗?
- java - @SLF4J:如何配置 lombok 支持的 slf4j
- android - 如何为 Android 设置 Qt-Creator?
- javascript - 警报组件不会第二次重新触发
- elasticsearch - Logstash 没有流式传输到 kafka
- editor - 摩纳哥编辑没有显示对 printf 的建议
- python - 如何在两个单独的行上扩展对象 dtype
- list - 如何知道二维列表包含颤动中的另一个列表
- sql - 如何检查给定日期范围内的帐户余额是否有变化
- xamarin - Xamarin Forms Android Paddings 未在 CollectionView 中显示