0

我在 Cerberus 1.3.2 模式中有以下部分(我将其存储为 YAML 文件):

members:
    dependencies:
      res_type: gsuite_group
    type: dict
    keysrules:
      allowed:
        - gsuite
        - csod
    schema: gsuite_group_schema

由于我使用的规则members在架构的其他部分中被重用,我尝试将它们隔离到自己的规则集中:

rules_set_registry.add('gsuite_group_ruleset', {
    'dependencies': {'res_type': 'gsuite_group'},
    'type': 'dict',
    'keysrules': {'allowed': ['gsuite', 'csod']},
    'schema': 'gsuite_group_schema'}
)

然后我将members位更改为:

members: gsuite_group_ruleset

执行所有这些并调用validator.validate()会导致以下异常:

File "C:\Users\goncalo.lourenco\.virtualenvs\User_Sync-Zf6-tVvH\lib\site-packages\cerberus\validator.py", line 1440, in __validate_schema_mapping
  allow_unknown = self.schema[field].get('allow_unknown', self.allow_unknown)
AttributeError: 'str' object has no attribute 'get'

关于为什么会发生这种情况的任何想法?

4

1 回答 1

1

您正在使用规则集作为规则的约束schema,但它需要一个完整的架构,其中顶级键是键引用,而不是键。

于 2020-06-20T15:48:27.473 回答