Я пытаюсь вставить данные в таблицу с идентификатором, который сопоставляется с другой таблицей, и я ожидаю, что он создаст данные, необходимые для моих отношений ... Проблема в том, что в родитель, у меня есть еще одно соотношение, и ребенка, я также относятся к Младенцу от родителей ... Смотри ниже:ошибка дублирования ключа при взаимодействии внешнего ключа на нескольких таблицах
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
проблема заключается в том, что, когда я использую фабрику, чтобы вставить родитель, по-видимому, это пытается дважды вставить таблицу childb, поскольку она указана в родительском и childa, потому что я продолжаю получать дублирующий ключ для childb_id ... А как вы можете предотвратить это?
Пути создать фабрику путем создания родительского объекта и совершения сеанса:
Parent()
Session.commit()
Как вы «Использование фабрики вставить Родитель»? Можете ли вы разместить фабрики для родителей и детей? – Oin
Я задал вопрос с вашей просьбой – Bodao