【发布时间】:2021-03-07 12:15:22
【问题描述】:
以下代码修改from the Pydantic documentation
我想知道如何更改BarModel 和FooBarModel,以便他们接受分配给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
最终解决方案将部署在 FastAPI 上下文中。
【问题讨论】:
-
已使用 __root__={} 语法完成上述工作,但仍无法将其应用于 FastAPI。这个错误看起来很相关github.com/tiangolo/fastapi/issues/911