Код: Выделить всё
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
class Asset(Base):
__tablename__ = 'asset'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User, foreign_keys=[user_id])
created_by = Column(Integer, ForeignKey(f"user.id"))
updated_by = Column(Integer, ForeignKey(f"user.id"))
items = db.execute(select(User).join(Asset)).all()
Код: Выделить всё
sqlalchemy.exc.AmbiguousForeignKeysError: Can't determine join between 'user' and 'asset'; tables have more than one foreign key constraint relationship between them. Please specify the 'onclause' of this join explicitly.
Код: Выделить всё
items = db.execute(select(User).join(Asset.user)).all()
Мне хотелось бы что-то вроде:
Код: Выделить всё
created_by = Column(Integer, ForeignKey(f"user.id", do_not_use_for_joins=True))
updated_by = Column(Integer, ForeignKey(f"user.id", do_not_use_for_joins=True))
Код: Выделить всё
user = relationship(User, foreign_keys=[user_id], use_as_default_when_no_key_specified=True)
Это может быть быть идеологическим вопросом. Это нормально не помечать созданные_by и обновленные_by как внешние ключи в моделях (но оставлять их такими в базе данных)?
Подробнее здесь: https://stackoverflow.com/questions/793 ... een-tables
Мобильная версия