首页 > 解决方案 > FastApi/Pydantic 从父表访问多对一关系

问题描述

我有这样的结构:

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') 

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

MPrueba 类的 pydantic 模式

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

    class Config:
        orm_mode = True

谢谢你的帮助。

标签: pythonapisqlalchemyfastapipydantic

解决方案


如果我理解正确,我正在处理类似的问题。尽管我不确定您是否有多对一的关系,但无论如何。

使用您之前定义的 Pydantic 模型:

class MRegla(BaseModel):
    ...

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

    class Config:
        orm_mode = True

如果您需要 MRegla 模型的一个子集,请定义一个包含必填字段的附加 Pydantic 模型并使用它。


推荐阅读