这样的关系:
a->b one->many
a->c one->many
b->c one->many
这是一个示例代码:
class A(Base):
__tablename__ = "a"
id = Column(Integer, primary_key=True, nullable=False)
b = relationship("A", backref="a")
class B(Base):
__tablename__ = "b"
id = Column(Integer, primary_key=True, nullable=False)
a_id = Column(Integer, ForeignKey("a.id"))
c = relationship("C", backref="b")
class C(Base):
__tablename__ = "c"
id = Column(Integer, primary_key=True, nullable=False)
a_id = Column(Integer, ForeignKey("a.id"))
b_id = Column(Integer, ForeignKey("b.id"))
a = A()
a.b = [B(), B()]
session.add(a)
session.commit()
没关系。但是当我这样使用时:
a = A()
a.b = [B(), B()]
a.b.c = [C(), C()]
session.add(a)
session.commit()
它不起作用。请帮助我,我希望foreignkey自动关联。
答案 0 :(得分:0)
a.b
是根据您的定义的向量。您需要通过first()
或one()
(或类似的,我现在还没有提供SQLA文档)来获取标量并分配给该对象的c
属性,I信。