小编sno*_*6oy的帖子

如何编写 Pydantic 模型来接受字典字典

下面的代码是根据 Pydantic 文档修改的 ,我想知道如何更改BarModelFooBarModel因此它们接受分配给m1. 我尝试过使用__root__和 语法,但Dict[str, BarModel]一直无法找到神奇的组合。

from pydantic import BaseModel

class BarModel(BaseModel):
    whatever: float
    foo: str

class FooBarModel(BaseModel):
    banana: str
    bar: BarModel

m = FooBarModel(banana='a', bar={'whatever': 12.3, 'foo':'hello'})
m1 = FooBarModel({
  'a':{'whatever': 12.3, 'foo':'hello'},
  'b':{'whatever': 12.4, 'foo':'bye'}
})

print(m.dict())   # returns a dictionary:
print(m1.dict())  # TypeError
Run Code Online (Sandbox Code Playgroud)

最终的解决方案将部署在 FastAPI 上下文中。

python pydantic fastapi

7
推荐指数
2
解决办法
4万
查看次数

使用 Pydantic 嵌套模型从 FastAPI 获取 JSON

以下代码接收一些已 POST 到 FastAPI 服务器的 JSON。FastAPI 使其可以作为 Pydantic 模型在函数中使用。我的示例代码通过写入文件来处理它。我不喜欢的(这似乎是使用 Pydantic List 的副作用)是我必须循环回来才能获得一些可用的 JSON。

我怎样才能在不循环的情况下做到这一点?

我觉得这一定是可能的,因为return images它确实有效。

from typing import List

from fastapi import FastAPI
from pydantic import BaseModel
import json

app = FastAPI()

class Image(BaseModel):
    url: str
    name: str

@app.post("/images/multiple/")
async def create_multiple_images(images: List[Image]):
  #return images             # returns json string
  #print(images)             # prints an Image object
  #print(images.json())      # AttributeError: 'list' object has no attribute 'json'
  #print(json.dumps(images)) # TypeError: Object of type Image is not JSON serializable
  img_data = …
Run Code Online (Sandbox Code Playgroud)

python json python-3.8 pydantic fastapi

2
推荐指数
1
解决办法
9549
查看次数

标签 统计

fastapi ×2

pydantic ×2

python ×2

json ×1

python-3.8 ×1