【发布时间】:2022-01-12 08:41:12
【问题描述】:
使用SQLAlchemy 我有三个模型:Parent1、Parent2 和 Child,其中 Parent1 有与 Parent2 一对一的关系,并且它们都与 Child 具有相同的关系。他们是这样的:
from extensions import db_session
class Parent1(Base):
__tablename__ = 'parent1'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
parent2 = relationship("Parent2", backref="parent1", uselist=False)
child = relationship("Child", backref="parent1", uselist=False)
class Parent2(Base):
__tablename__ = 'parent2'
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
parent1_id = Column(Integer, ForeignKey('parent1.id'))
child = relationship("Child", backref="parent2", uselist=False)
class Child(Base):
id = Column(Integer, primary_key=True)
parent1_id = Column(Integer, ForeignKey('parent1.id'))
parent2_id = Column(Integer, ForeignKey('parent2.id'))
我想要实现的是用其父母的外键填充 Child 表。 所以,当我执行这个时:
parent1 = Parent1(name="Adil")
parent1.parent2 = Parent2(name="Aisha")
parent1.child = Child()
db_session.add(parent1)
db_session.commit()
它根据需要向父表插入数据,但向 Child 表插入数据如下:
儿童
id parent1_id parent2_id
1 1 NULL
如何正确设置关系,以便在对 Parent1->Parent2 表的任何插入时,它还将其 id 作为外键插入 Child强>表?
我想要实现的是:
儿童
id parent1_id parent2_id
1 1 1
【问题讨论】:
标签: python sql sqlalchemy orm flask-sqlalchemy