Arrays 它如何使查询ndb和条件更加智能

Arrays 它如何使查询ndb和条件更加智能,arrays,google-app-engine,python-2.7,iteration,app-engine-ndb,Arrays,Google App Engine,Python 2.7,Iteration,App Engine Ndb,我尝试查询标签搜索。 标签:有多少标签ex.3 q:标签数组,例如[foo'、'hoo'、'poo'] def queryByTags(cls, tags, q): def one(): qry = models.Card.query(models.Card.tags_value == q[0]) return qry def two(): qry = models.Card.query(

我尝试查询标签搜索。
标签:有多少标签ex.3
q:标签数组,例如[foo'、'hoo'、'poo']

def queryByTags(cls, tags, q):

        def one():
            qry = models.Card.query(models.Card.tags_value == q[0])
            return qry

        def two():
            qry = models.Card.query(ndb.AND(models.Card.tags_value == q[0],
                                                models.Card.tags_value == q[1]))
            return qry

        def three():
            qry = models.Card.query(ndb.AND(models.Card.tags_value == q[0],
                                                models.Card.tags_value == q[1],
                                                models.Card.tags_value == q[2]))
            return qry

        tags_len = {1: one,
                    2: two,
                    3: three,
                    }

        return tags_len[tags]()  
此方法最多可以使用3个标记。我可以自己复制代码并将其扩展到7,8,9…
这是一种非常悲哀的方式……
有什么聪明的方法吗?

在伪python ndb中(我没有运行我的代码,但你会得到它),我会说一种方法是:

cards_count = Card.query().filter(tags_value==q[0])\
  .filter(tags_value==q[1])\
  .filter(tags_value==q[2]).count()
或者如果迭代动态数组(未知长度)

q:qry=qry.filter(web\u models.Card.tags\u value==value)中的值的qry=web\u models.Card.query()非常完美。非常感谢您的快速回复和回答
cards_count = Card.query()
for value in q:
  q = q.filter(tags_value==value)
cards_count = q.count()