Pydantic 模型之间的两种关系
Two way relation between Pydantic models
假设一个用户有多个 post,而一个 post 只有一个用户。我想知道是否有一种方法可以指定双向关系(如果它是可取的)?尝试以下操作时,会导致“NameError:名称 'Post' 未定义”。
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
posts: List[Post]
class Post(BaseModel):
id: int
user: User
Pydantic 新手,如有任何帮助,我们将不胜感激!
您可以通过 postponed annotations:
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
posts: "List[Post]"
class Post(BaseModel):
id: int
user: User
User.update_forward_refs()
来自the same source的另一种方法:
from __future__ import annotations
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
posts: List[Post]
class Post(BaseModel):
id: int
user: User
user = User(id=1, posts=[])
post = Post(id=1, user=user)
P.S。但它看起来像错误的设计。最好选择一个方向。
假设一个用户有多个 post,而一个 post 只有一个用户。我想知道是否有一种方法可以指定双向关系(如果它是可取的)?尝试以下操作时,会导致“NameError:名称 'Post' 未定义”。
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
posts: List[Post]
class Post(BaseModel):
id: int
user: User
Pydantic 新手,如有任何帮助,我们将不胜感激!
您可以通过 postponed annotations:
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
posts: "List[Post]"
class Post(BaseModel):
id: int
user: User
User.update_forward_refs()
来自the same source的另一种方法:
from __future__ import annotations
from typing import List
from pydantic import BaseModel
class User(BaseModel):
id: int
posts: List[Post]
class Post(BaseModel):
id: int
user: User
user = User(id=1, posts=[])
post = Post(id=1, user=user)
P.S。但它看起来像错误的设计。最好选择一个方向。