#models1.py
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
addresses = relationship("Address", backref="user")
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
email = Column(String)
user_id = Column(Integer, ForeignKey('user.id'))
#models2.py
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
email = Column(String)
user_id = Column(Integer, ForeignKey('user.id'))
addresses = relationship("Address", backref="user")
正如您所知,唯一的区别是“关系”被置于不同的位置。我很困惑,因为在SQLAlchemy文档中,它将它放在两个不同的地方。首先是here,然后是here。
“关系”的正确位置是什么?它甚至是必需的吗?如果我把它留下来怎么办?
答案 0 :(得分:0)
两者在语义上都是相同的
SA
使用ForeignKey
来推断many
关系的one-to-many
方。
阅读解释bidirectional
关系的Linking Relationships with Backref部分。相关提取物:
...实际上,backref关键字只是放置a的常用快捷方式 第二个关系到地址映射,包括 在镜子上建立双方的事件监听器 两个方向的属性操作。 ...