FastApi/Pydantic 从父表访问多对一关系

Mas*_*oda 5 python api sqlalchemy pydantic fastapi

我有这样的结构:

SqlAlchemy 模型

class MPrueba(Base):

    __tablename__ = 'M_pruebas'

    idpruebas = Column(Integer, primary_key=True)
    idfuentes = Column(ForeignKey('M_fuentes.idfuentes', ondelete='RESTRICT', onupdate='RESTRICT'), index=True)

    M_fuente = relationship('MFuente')


class MRegla(Base):

    __tablename__ = 'M_reglas'

    idreglas = Column(Integer, primary_key=True)
    idpruebas = Column(ForeignKey('M_pruebas.idpruebas', ondelete='RESTRICT', onupdate='RESTRICT'), index=True)
    nombre = Column(String(40))

    M_prueba = relationship('MPrueba') 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,MRegla 类上存在指向 MPrueba 类的关系。这意味着当我对 MRegla 类发出一些 get 请求时,M_prueba 字段应包含来自 MPrueba 类的数据。我如何从 MPrueba 类访问该关系?我想生成一个像这样的 pydantic 模型:

MPrueba 类的 pydantic 模式

class Prueba(BaseModel): 
    idpruebas: int
    idfuentes: int
    reglas : # Append the MRegla here

    class Config:
        orm_mode = True
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

小智 1

如果我理解正确的话,我正在处理类似的问题。虽然我不确定你们之间是否存在多对一的关系,但无论如何。

使用之前定义的 Pydantic 模型:

class MRegla(BaseModel):
    ...

class Prueba(BaseModel): 
    idpruebas: int
    idfuentes: int
    reglas : MRegla

    class Config:
        orm_mode = True
Run Code Online (Sandbox Code Playgroud)

如果您需要 MRegla 模型的子集,请定义一个带有所需字段的附加 Pydantic 模型并使用它。