python - Pydantic验证器删除空白字符串?

标签 python fastapi pydantic

我有以下 Pydantic 模型:

class Report(BaseModel):
    id: int
    name: str
    grade: float = None
    proportion: float = None

    @validator('*', pre=True)
    def blank_strings(cls, v):
        print(v)
        if v == "":
            return None
        return v

我的目标是能够将空字符串作为空值忽略,但它似乎不起作用。
Report(id=5,name="Steve",grade=0.5)创建一个实例,其中 proportion=None但...Report(id=5,name="Steve",grade=0.5,proportion="")抛出错误 value is not a valid float (type=type_error.float) .我怎样才能得到与第一种情况相同的结果?

最佳答案

这对我有用 pydantic==1.6.1:

class Report(BaseModel):
    id: int
    name: str
    grade: Optional[float]
    proportion: Optional[float]

    @validator('proportion', pre=True)
    def blank_string(value, field):
        if value == "":
            return None
        return value
Optional创建等效于 Union[float, None] 的类型约束.
将空字符串转换为 None 满足类型约束。

关于python - Pydantic验证器删除空白字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59584142/

相关文章:

python - Google Drive API V3 从快捷方式获取原始文件

python - JSON 获取嵌套字典中的键路径

file-upload - 将小文件上传到 FastAPI 端点,但上传文件内容为空

python - pydantic:创建模型实例时如何忽略无效值

python - 测试 Flask app.config

python - 在odoo中使用同一字段添加多个条目

reactjs - 跨站点 cookie 问题 : how to set cookie from backend to frontend

azure - 在 azure 函数上部署现有的 python FastAPI 项目

python - Pydantic Enum 加载名称而不是值

python - FastApi 获取请求显示验证错误