2

私は現在、SQLAで次のようなことをしています。

class Base(object):
    query = DBSession.query_property()
    @classmethod
    def _get_fulltext_query(cls, terms):
        # Search is a method which runs a fulltext search in Whoosh for objects of the given type, returning all ids which match the given terms
        ids = search(terms, cls.__name__)
        return cls.query.filter(cls.id.in_(ids))

カスタムクエリクラスを設定して、次のようなことをしたいと思います。

class BaseQuery(Query):
    def fulltext(self, terms):
        # Need a way to find out what class we're querying so that I can run the fulltext search and return the proper query

class Base(object):
    query = DBSession.query_property(BaseQuery)

それは私にはきれいに思えます。また、クエリされているクラスを知る必要がある他のユースケースもあります。たとえば、返される通知タイプを知る必要がある一連の通知クラスです。

BaseQuery.fulltext内からクエリされているクラスを見つける方法はありますか?

4

1 に答える 1

5

これは機能するはずです:

class BaseQuery(Query):
    def fulltext(self, terms):
        # assuming query is always created with `cls.query` or `DBSession.query(cls)`
        cls = self._entities[0].type
        ...
于 2012-09-03T23:02:20.777 に答える