我有一個字段爲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