2011-02-01 14 views
3

は、私はいくつかのSQLAlchemy models(宣言)を持っており、いくつかのクエリは次のように書くこと:私は私のコードで上記のクエリを複数回使用する必要があるので、私は何度もそれを繰り返すよりも優れてやりたいSQLAlchemyにdjangoのマネージャと同等のものがありますか?

Mymodel.query.filter(Mymodel.myfield=='lambda') 

。私はdjangoにあなたのモデルにmanagersを入れることでそれを行うことができることを知っています。

SQLAlchemyにdjangoのマネージャに相当するものがありますか?それとも別のやり方ですか?

答えて

8

一般的なクエリでは、マップされた(ORM)クラスにクラスメソッドを追加します。例えば :

class User(object): 

    @classmethod 
    def get_by_username(cls, dbsession, username): 
     return dbsession.query(cls).filter(cls.username==username).one() 

マッピングされたクラスは、本質的に、マネージャです。

+0

私は感謝の前に考えていたはずの良いアイデア! –

1

最後に、マネージャークラスを作成しています。私は、SAオブジェクト上にインスタンスメソッドを実装し、Mgrクラスのモデルインスタンスのリストなどをフェッチ/生成するものだけをラップします。