Два первичных ключа к одной таблице в классе `sqlalchemy` - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь использовать внешние ключи, чтобы связать два столбца в одной таблице с двумя столбцами в другой. Стол 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 достаточно, чтобы точно знать, как определить это отношение

...