Sim*_*Zen 7 python range pydantic fastapi
所以我有以下代码行:
item: Optional[int] = Field(None, ge=1, le=168)
Run Code Online (Sandbox Code Playgroud)
我也希望有可能设定-1
价值。因此,我需要排除零值,但我想允许一个值和来自to-1
的值。1
168
有什么办法可以做到这一点吗?
-1
您可以指定从到 的范围,168
并且还可以使用自定义 Pydantic 验证器来检查该值是否等于0
。如果是这样, raise ValueError
。如果使用 Pydantic 模型来定义端点的查询参数(使用Depends()
),请查看此答案。
from fastapi import FastAPI
from typing import Optional
from pydantic import Field, BaseModel, validator
app = FastAPI()
class Foo(BaseModel):
item: Optional[int] = Field(None, ge=-1, le=168)
@validator('item')
def prevent_zero(cls, v):
if v == 0:
raise ValueError('ensure this value is not 0')
return v
@app.post("/")
def submit(foo: Foo):
return foo
Run Code Online (Sandbox Code Playgroud)
请注意,在 Pydantic V2 中,@validator
已被弃用并被@field_validator
. 请查看此答案以获取更多详细信息和示例。