当两个 pydantic 模型有关系时,如何将这些模型分离到不同的文件中?

问题描述 投票:0回答:1

下午好,首先,我使用的是Python 3.11.3 FastAPI和SQLAlchemy。 当两个模型有关系时,我一直试图将这两个模型分开,但是一旦我将这些模型分离到不同的文件中,即使我导入引用该模型的表,我也会收到错误。 有没有办法将这两个模型分开并保持它们之间的关系? 这将非常有帮助,谢谢。

例如,这是我的代码,我想将这两个类分成不同的文件以保持关系 ->

类 ToPersona(Base): 表名 = 'to_persona'

id_persona = Column(Integer, primary_key=True, index=True)
fc_nombre = Column(String(50), nullable=False)

ToUsuario 类(基础): 表名 = 'to_usuario'

id_usuario = Column(Integer, primary_key=True, index=True)
fk_id_persona = Column(ForeignKey('to_persona.id_persona'))
to007_persona = relationship('ToPersona')
python model backend fastapi pydantic
1个回答
0
投票

您可以将两个模型分离到不同的文件中,同时保持关系。这是一个示例结构:

to_persona.py

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class ToPersona(Base):
    __tablename__ = 'to_persona'

    id_persona = Column(Integer, primary_key=True, index=True)
    fc_nombre = Column(String(50), nullable=False)

to_usuario.py:

from sqlalchemy import Column, Integer, ForeignKey
from sqlalchemy.orm import relationship
from .to_persona import ToPersona
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class ToUsuario(Base):
    __tablename__ = 'to_usuario'

    id_usuario = Column(Integer, primary_key=True, index=True)
    fk_id_persona = Column(ForeignKey('to_persona.id_persona'))
    to007_persona = relationship(ToPersona)

确保两个文件(

to_persona.py
to_usuario.py
)位于同一目录中或者可以相互导入。通过从
ToPersona
文件中的
to_persona.py
导入
to_usuario.py
类来维护关系。这样,当您定义关系时,它使用在其他文件中定义的相同类。

确保根据您的项目设置调整导入和文件结构。

© www.soinside.com 2019 - 2024. All rights reserved.