gpt4 book ai didi

python - 数据类 : Require at least one value to be set in grouping of model fields

转载 作者:太空宇宙 更新时间:2023-11-04 11:08:01 25 4
gpt4 key购买 nike

如何要求将数据类的一组字段中的至少一个字段设置为真值?这是否需要自定义根验证器方法,因为它需要一次查看多个字段?例如,考虑以下数据类:

@dataclass
class MyModel:
field1: Optional[str]: None
field2: Optional[str]: None
field3: Optional[str]: None

如何要求将这三个字段(field1field2field3)中的至少一个设置为非空字符串?是否有一些内置的方法来指定至少一个字段必须是非零/空的(除了自定义根验证器)?

最佳答案

您可以使用根验证器或将验证器添加到 field3 并检查前面的字段(field1field2)以检查一个其中已设置。

使用root_validator:

from typing import Optional

from pydantic import root_validator
from pydantic.dataclasses import dataclass


@dataclass
class MyModel:
field1: Optional[str] = None
field2: Optional[str] = None
field3: Optional[str] = None

@root_validator
def any_of(cls, v):
if not any(v.values()):
raise ValueError('one of field1, field2 or field3 must have a value')
return v


print(MyModel(field1='hello'))
print(MyModel(field2='goodbye'))
print(MyModel())

关于python - 数据类 : Require at least one value to be set in grouping of model fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58958970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com