Предположим, у меня есть запрос с определенным порядком по выражению, скажем, например:
session.query(Object).order_by(Object.column_a.asc(), Object.column_b.asc())
Теперь я задал другой объект и хотел бы отфильтровать запрос, чтобы он содержал все объекты, которые больше указанного , Обычно я бы написал:
pivot = session.query(Object).filter(
Object.id == id_
).subquery('pivot')
session.query(Object).filter(
tuple_(Object.column_a, Object.column_b) >= tuple_(pivot.c.column_a, pivot.c.column_b)
)
Как можно динамически изменять запрос? Я пытался создать условия типа or_(Object.column_a > pivot.column_a, and_(Object.column_a == pivot.column_a, Object.column_b > pivot.column_b))
, но это слишком сложно, если список order_by длинный.