2012-04-21 57 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

回答