我有一个字段为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))
它的工作原理,但如果我有更多的领域后来我想我会添加更多的条件,必须有成为模型级别的一种方法。
你是什么意思到“模型级别”?你能举例说明你希望它看起来如何吗? – zzzeek 2012-04-28 15:58:59