Pydantic 同名模型列表
Pydantic list of models with the same name
假设我想要一个用户模型,它还包含 "friends" 必须是用户列表的字段:
class User(BaseModel):
id: int
name: str
friends: List[User]
但这是不可能的。有没有办法实现这种行为?
是的,您需要使用 update_forward_refs
,请参阅文档中的 self-referencing models。
from typing import List
from devtools import debug
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
friends: List['User']
User.update_forward_refs()
u = User(id=123, name='hello', friends=[dict(id=321, name='goodbye', friends=[])])
debug(u)
输出:
test.py:18 <module>
u: User(
id=123,
name='hello',
friends=[
User(
id=321,
name='goodbye',
friends=[],
),
],
) (User)
假设我想要一个用户模型,它还包含 "friends" 必须是用户列表的字段:
class User(BaseModel):
id: int
name: str
friends: List[User]
但这是不可能的。有没有办法实现这种行为?
是的,您需要使用 update_forward_refs
,请参阅文档中的 self-referencing models。
from typing import List
from devtools import debug
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
friends: List['User']
User.update_forward_refs()
u = User(id=123, name='hello', friends=[dict(id=321, name='goodbye', friends=[])])
debug(u)
输出:
test.py:18 <module>
u: User(
id=123,
name='hello',
friends=[
User(
id=321,
name='goodbye',
friends=[],
),
],
) (User)