4

次のスキーマを検討してください

schema = {
    "value_type":{
        "type": "string", "required": True
    }, 
    "units": {
        "type": "string", 
         "dependencies": {"value_type": ["float", "integer"]},
         "required": True
    }
}

フィールドの値が または のいずれかの場合にのみフィールドunits必須にしたい。value_typefloatinteger

これが私が達成しようとする行動です

v = Validator(schema)
v.validate({"value_type": "float", "units": "mm"})  # 1. 
True
v.validate({"value_type": "boolean", "units": "mm"})  # 2.
False
v.validate({"value_type": "float"})  # 3.
False
v.validate({"value_type": "boolean"})  # 4.
True

上記のスキーマは、最初の 3 つのケースに対してのみ期待される結果を返します。

units(を省略して"required": True)の定義を変更すると

"units": {"type": "string", "dependencies": {"value_type": ["float", "integer"]}}

次に、の検証

v.validate({"value_type": "float"})  # 3.
True

True私が欲しいものではないリターン。

ドキュメントoneofのルールを調べましたが、これをプロパティにのみ適用する方法が見つかりませんでした。required

True依存関係が満たされた場合にのみ必須の値が必要です。

これを実現するには、スキーマをどのように変更すればよいですか?

4

1 に答える 1