2017-10-07 6 views
0

私はおおよそ次のようになりサーベラスとの文書を検証しています:マッピングフィールドにCerberusのアイテムが少なくとも1つあることを確認するにはどうすればよいですか?

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

ないサブドキュメント内のすべてのフィールドが存在する必要が、しかし、1つは、必要があります。これまでのところ、私のスキーマは次のようになります。

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

どのように私はfieldXの少なくとも一方が設けられていることが強制できますか?

この質問はfom this号に由来します。

答えて

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に少なくとも1つのフィールドがあることを保証します。
  • allow_unknownルールでは、field<1…3>以外のフィールドは検証に合格しません。
  • デフォルトではです。
関連する問題