別のテーブルにマップする ID を持つテーブルにデータを挿入しようとしていますが、関係に必要なデータが作成されることを期待しています...問題は、親内に別の関係があり、子にあることです。私は親からの子にも関係しています...以下を参照してください:
class Parent(Base):
parent_field = Column(Integer)
childa_id = Column(Integer, ForeignKey(ChildATable.childa_id))
childb_id = Column(Integer, ForeignKey(ChildBTable.childb_id))
childa = relationship(ChildATable)
childb = relationship(ChildBTable)
class ChildA(Base):
childa_id = Column(Integer, primary_key=True)
childb_id = Column(Integer, ForeignKey(ChildB.childb_id))
class ChildB(Base):
childb_id = Column(Integer, primary_key=True)
class ParentTable(factory.alchemy.SQLAlchemyModelFactory)
class Meta:
....
parent_field = factory.Sequence(lambda n: n + 1)
childa = factory.SubFactory(ChildA)
childb = factory.SubFactory(ChildB)
class ChildATable(factory.alchemy.SQLAlchemyModelFactory)
class Meta:
....
childa_id = factory.Sequence(lambda n: n + 1)
childb = factory.SubFactory(ChildB)
class ChildBTable(factory.alchemy.SQLAlchemyModelFactory)
class Meta:
....
childb_id = 1 #I need this to be hardcoded to 1
問題は、factory を使用して Parent を挿入すると、childb_id の重複キーを取得し続けるため、parent と childa で参照されていることを考えると、どうやら childb テーブルを 2 回挿入しようとすることです...これを防ぐ方法はありますか?
ファクトリを作成する方法は、Parent オブジェクトを作成してセッションをコミットすることです。
Parent()
Session.commit()