我有两个模块。第一个是:
# module_1.py
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase):
pass
class User(Base):
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
第二个是:
# module_2.py
from sqlalchemy.orm import Mapped, mapped_column
from .module_1 import Base, User
class Address(Base):
id: Mapped[int] = mapped_column(primary_key=True)
city: Mapped[str]
user_id: Mapped[int] = mapped_column(
ForeignKey('user.id'), nullable=False
)
user: Mapped['User'] = relationship(back_populates='addresses')
现在的问题是我不知道如何添加
addresses: Mapped[Set['Address']] = relationship(back_populates='user')
从 User
内部到
module_2.py
类,无需修改 module_1.py
文件。顺便说一句,我不想使用旧的 backref
关系参数。
您可以尝试在 User 类定义后添加
addresses
关系:
from sqlalchemy.orm import relationship
from sqlalchemy.orm.base import class_mapper
from sqlalchemy.orm.relationships import RelationshipProperty
from .module_1 import User
mapper = class_mapper(User)
mapper.add_property(
'addresses',
relationship(
Address,
back_populates='user',
uselist=True
)
)