Мне нужно создать отношения многие ко многим между двумя таблицами.Мне нужно указать параметр foreign_keys
, так как в обеих таблицах есть другие ссылки друг на друга.
Пробовал несколько подходов, используя Class
объявление таблицы ассоциаций и Table
объект напрямую.
Когда я удаляю опцию foreign_keys
в обоих классах User and
Feature`, она работает, но когда я добавляю другие поля с сопоставлениями между этими двумя классами, я получаю исключение множественных путей.
feature_user = Table(
'feature_user',
Base.metadata,
Column('feature_id', Integer, ForeignKey('features.id')),
Column('user_id', Integer, ForeignKey('users.id')),
)
class Feature(Base):
__tablename__ = 'features'
id = getIdColumn()
# other fields...
cpm_engineers = relationship(
'User',
secondary=feature_user,
foreign_keys=[feature_user.columns.user_id],
back_populates='cpm_engineer_of',
)
class User(Base):
__tablename__ = 'users'
id = getIdColumn()
# other fields...
cpm_engineer_of = relationship(
'Feature',
secondary=feature_user,
foreign_keys=[feature_user.columns.feature_id],
back_populates='cpm_engineers',
)
При создании User
из Feature
я получаю следующую ошибку: sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between parent/child tables on relationship Feature.cpm_engineers - there are no foreign keys linking these tables via secondary table 'feature_user'. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify 'primaryjoin' and 'secondaryjoin' expressions.