0

我正在做一些 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 驱动。

4

0 回答 0