Я пытаюсь использовать внешние ключи, чтобы связать два столбца в одной таблице с двумя столбцами в другой. Стол recipe_ingredients
один-ко-многим с ingredients
from sqlalchemy import Column, Integer, Text, ForeignKey, Float, Boolean
from sqlalchemy.orm import relationship
from barlibrary.models.meta import Base
class RecipeIngredient(Base):
__tablename__ = 'recipe_ingredients'
id = Column(Integer, primary_key=True)
ingredient_id = Column(Integer, ForeignKey('ingredients.id'))
ingredient_name = Column(Text, ForeignKey('ingredients.id'))
ingredient = relationship('Ingredient', back_populates='recipe_ingredient')
class Ingredient(Base):
__tablename__ = 'ingredients'
id = Column(Integer, primary_key=True)
name = Column(Text, unique=True)
recipe_ingredient = relationship('RecipeIngredient', back_populates='ingredient')
Но я получаю ошибку
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join
condition between parent/child tables on relationship
Ingredient.recipe_ingredient - there are multiple foreign key paths linking
the tables. Specify the 'foreign_keys' argument, providing a list of those
columns which should be counted as containing a foreign key reference to
the parent table.
И я считаю, что это просто потому, что мне нужно указать recipe_ingredients.name
в ingredients.name
в той же строке, в которой идентифицируются идентификаторы. Я не знаком с SQL или sqlalchemy
достаточно, чтобы точно знать, как определить это отношение