Я искал что-то, что могло бы помочь мне решить эту проблему, но все, что я нашел, не помогло. Так что я собираюсь поставить свою проблему здесь.
Исключение, которое я получаю, вот это:
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Cliente.Productos_suscritos - there are multiple foreign key paths linking the tables via secondary table 'ProductoFavoritoCliente'. Specify the 'foreign_keys' argument, providing a list of those columns which should be counted as containing a foreign key reference from the secondary table to each of the parent and child tables.
Я хотел установить отношения многие ко многим между двумя таблицами под названием «Cliente» и «ProductoTienda» с использованием промежуточной таблицы «ProductoFavoritoCliente»
И, похоже, SQLAlchemy теперь не знает, как установить связь с таблицей «ProductoFavoritoCliente», поскольку эта таблица имеет несколько внешние ключи.
Это классы отображения для таблиц.
class Cliente(Base):
__tablename__ = 'Cliente'
NombreUsuario = Column(String, primary_key=True)
Contrasena = Column(String)
# Relaciones NM
Productos_suscritos = relationship('RelacionProductoTienda', secondary='ProductoFavoritoCliente')
# Relaciones 1N
Dispositivos = relationship('Dispositivo', back_populates="Usuario")
class RelacionProductoTienda(Base):
__tablename__ = 'ProductoTienda'
IDProducto = Column(String, ForeignKey('Producto.ID'), primary_key=True)
IDTienda = Column(String, ForeignKey('Tienda.ID'), primary_key=True)
Precio = Column(DECIMAL)
Stock = Column(Integer)
# Relaciones NM
Clientes_suscritos = relationship('Cliente', secondary='ProductoFavoritoCliente')
И промежуточный класс
class RelacionProductoFavorito(Base):
__tablename__ = 'ProductoFavoritoCliente'
IDProducto = Column(String, ForeignKey('ProductoTienda.IDProducto'), primary_key=True)
IDTienda = Column(String, ForeignKey('ProductoTienda.IDTienda'), primary_key=True)
Usuario = Column(String, ForeignKey('Cliente.NombreUsuario'), primary_key=True)
Я пробовал разные решения, которые я нашел в Inte rnet, но, поскольку у меня не было успеха, я оставил код таким, каким он был изначально, когда произошла ошибка.
Например, я попытался добавить вещь foreign_keys в промежуточный класс 'RelacionProductoFavorito ', добавив эту строку:
ProductoTienda = relationship('RelacionProductoTienda', foreign_keys=[IDProducto, IDTienda])
Это также не сработало.
Что я делаю не так?
Кроме того, извините за не по-английски sh код.