У меня есть модель с полем is_deleted, теперь я хочу, чтобы все формы запроса для этой модели всегда отфильтровывались с помощью is_deleted = False в дополнение к любым аргументам фильтрации, переданным в .filter и .filter_by.
В Django я обычно переопределяю менеджер и добавляю собственную фильтрацию, но мне нужна помощь для SQLAlchemy.
UPDATE:
Я закончил делать следующее:
class CustomQuery(Query):
def __new__(cls, *args, **kwargs):
if args and hasattr(args[0][0], "is_deleted"):
return Query(*args, **kwargs).filter_by(is_deleted=False)
else:
return object.__new__(cls)
session = scoped_session(sessionmaker(query_cls=CustomQuery))
Это работает, но если у меня будет больше полей позже, я предполагаю, что мне придется добавить больше условий, должен быть способ сделать это на уровне модели.