我正在做一些 POC 工作,并将一些代码从 fastapi+sqlalchemy 移植到 fastapi+tortoise-orm。
我有一些相互引用的pydantic模型,有点:
class DomainBase(BaseModel):
id: int
name: str
class Domain(DomainBase):
mailboxes: List["MailboxSummary"] = []
class DomainSummary(DomainBase):
mailboxes_count: int
class MailboxBase(BaseModel):
id: int
username: str
class Mailbox(MailboxBase):
domain: DomainSummary
class MailboxSummary(MailboxBase):
domain_id: int
这涵盖了两个数据库模型 - 域和邮箱,它们之间具有一对多的关系。
这在 sqlalchemy+fastapi 中工作正常 - 因为 DB 模型和 pydantic 模式是完全分开定义的,只要 db 方法返回具有正确属性的对象,一切正常。
使用 tortoise-orm+fastapi 我们使用完全基于数据库的 pydantic_model_creator,并且似乎没有给我任何机会来配置它应该用于特定关系的 pydantic 模型。
有没有办法让这种事情发挥作用?感觉就像使用 pydantic_model_creator 在数据库逻辑/模式和表示逻辑/模式之间做了很多交叉污染,所以我很乐意摆脱它 - 但我不确定 tortoise-orm 是否可以在没有 pydantic_model_creator 的情况下使用 pydantic 驱动。