fastapi dict转baseModel
时间: 2023-07-04 10:04:00 浏览: 312
在 FastAPI 中,可以使用 Pydantic 库中的 BaseModel 类来创建数据模型。如果你有一个字典类型的数据,可以通过将其作为关键字参数传递给 BaseModel 类来创建一个 BaseModel 实例。例如:
```python
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
item_data = {"name": "apple", "price": 2.5}
item = Item(**item_data)
print(item)
```
输出:
```
name='apple' price=2.5 is_offer=None
```
在上面的代码中,我们定义了一个 Item 模型类,它继承自 BaseModel 类,并定义了三个属性:name、price 和 is_offer。然后,我们创建一个字典类型的数据 item_data,将其作为关键字参数传递给 Item 类的构造函数,从而创建一个 Item 实例 item。
如果字典类型的数据与模型类的属性不完全匹配,会引发 ValueError 异常。如果需要忽略字典中多余的属性,可以设置模型类的 Config 类的 `extra` 属性为 `Extra.ignore`。例如:
```python
from fastapi import FastAPI
from pydantic import BaseModel, Extra
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: bool = None
class Config:
extra = Extra.ignore
item_data = {"name": "apple", "price": 2.5, "color": "red"}
item = Item(**item_data)
print(item)
```
输出:
```
name='apple' price=2.5 is_offer=None
```
在上面的代码中,我们在 Item 类中定义了一个 Config 类,并设置了 extra 属性为 Extra.ignore。这意味着在创建 Item 实例时,会忽略字典中多余的属性,不会引发异常。
阅读全文