fastapi使用validator时如何拿到字段值
时间: 2023-12-10 15:37:33 浏览: 33
在 FastAPI 中使用 validator 函数时,可以通过第二个参数 `value` 来获取到当前字段的值。例如:
```python
from fastapi import FastAPI
from pydantic import BaseModel, validator
class Item(BaseModel):
name: str
price: float
@validator('price')
def check_price(cls, value, values):
if value < 0:
raise ValueError('price must be >= 0')
if 'name' in values and 'banana' in values['name'].lower() and value > 1.0:
return round(value * 0.9, 2)
return value
app = FastAPI()
@app.post('/items/')
async def create_item(item: Item):
return {'item': item}
```
在上述代码中,`check_price` validator 函数中的第二个参数 `values` 是一个字典,其中包含了当前请求中所有字段的值。因此我们可以通过 `values` 参数来获取到 `name` 字段的值并进行比较。而要获取到当前字段 `price` 的值,则可以直接使用 `value` 参数。