我尝试查询标签搜索 标签:ex.3多少个标签 q:标签数组ex。['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 ......
这是非常悲伤的方式...
有什么聪明的方法吗?
答案 0 :(得分:1)
在伪python-ndb中(我没有运行我的代码,但你会得到它)我会说一种方法是做:
cards_count = Card.query().filter(tags_value==q[0])\
.filter(tags_value==q[1])\
.filter(tags_value==q[2]).count()
或迭代动态数组(未知长度)
cards_count = Card.query()
for value in q:
q = q.filter(tags_value==value)
cards_count = q.count()