Фильтр SQLAlchemy по умолчанию

У меня есть модель с полем is_deleted, теперь я хочу, чтобы все формы запросов для этой модели всегда фильтровались по is_deleted=False в дополнение к чему бы то ни было аргументы фильтрации передаются в.filter и.filter_by.

В Django я обычно переопределяю менеджер и добавляю собственную фильтрацию, но мне нужна помощь по SQLAlchemy.

ОБНОВЛЕНИЕ:

В итоге я -сделал следующее:

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))

Это работает, но если позже у меня будет больше полей, я думаю, мне придется добавить больше условий, должен быть способ сделать это на уровень модели.

16
задан Marconi 23 April 2012 в 00:02
поделиться