Я пытаюсь настроить свои модели SQLAlchemy на использование таблицы ассоциаций для отношения. У меня проблема в том, что в ассоциативной таблице есть столбец «удален». Я не могу найти способ указать SQLAlchemy not возвращать связанные объекты, если связь была удалена (мягко удалена).
Вот пример:
class A(Base):
__tablename__ = "a"
id = Column(Integer, primary_key=True)
b_list = relationship("B", secondary=lambda: association_table, backref="a_list")
class B(Base):
__tablename__ = "b"
id = Column(Integer, primary_key=True)
association_table = Table(
"a_b_association",
metadata,
Column("a_id", Integer, ForeignKey(A.id), primary_key=True),
Column("b_id", Integer, ForeignKey(B.id), primary_key=True),
Column("removed", Integer)
)
В приведенном выше примере всегда будет возвращаться связь. Мне нужно изменить отношение, чтобы оно возвращалось только при «удаленном == 0».
Спасибо за любую помощь с этим.
Я знаю, что SQL запрос, который я хочу, чтобы SQLAlchemy сделал:
SELECT A.id, B.id
FROM A
INNER JOIN a_b_association ON A.id=a_b_association.a_id
INNER JOIN B ON B.id=a_b_association.b_id
WHERE a_b_association.removed=0;