2012-04-21 59 views
13

我有一个字段为is_deleted的模型,现在我希望此模型的所有形式的查询总是通过is_deleted = False进行筛选,除了将任何筛选参数传递给.filter和.filter_by。SQLAlchemy默认筛选器

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

它的工作原理,但如果我有更多的领域后来我想我会添加更多的条件,必须有成为模型级别的一种方法。

+0

你是什么意思到“模型级别”?你能举例说明你希望它看起来如何吗? – zzzeek 2012-04-28 15:58:59

回答