0

我正在使用 Cerberus 验证大致如下所示的文档:

{"a_dict": {"field1": "test1",
            "field2": "test2",
            "field3": "test3"}}

并非子文档中的所有字段都需要存在,但应该存在。到目前为止,我的架构如下所示:

"a_dict": {"type": "dict",
           "schema": {"field1": {"type": "string",
                                 "required": False},
                      "field2": {"type": "string", 
                                 "required": False},
                      "field3": {"type": "string",
                                 "required": False}}}

我怎样才能强制提供至少其中一个fieldX

这个问题源于这个问题。

4

1 回答 1

1

这可以解决问题:

string_field = {'type': 'string'}
schema = {'a_dict': {'type': 'dict',
                     'minlength': 1,
                     'allow_unknown': False,
                     'schema':
                         {f: string_field for f in ('field1', 'field2', 'field3')}
                     }}
  • minlength规则确保a_dict.
  • allow_unknown规则确保没有其他字段field<1…3>通过验证。
  • required规则是False默认的。
于 2017-10-07T12:56:23.107 回答