2

我需要构造一个具有重复属性的逻辑查询并且无法使其工作。我有一个带有主题的列表对象。

topics = [u'string1', u'string2', ...]

我有一个查询对象:

videos = Video.query()
videos.count()
=> 19

主题是重复的字符串属性

class Video
  topics = ndb.StringProperty(repeated=True)

我想返回具有主题string1OR的视频string2。我之前也不知道列表对象的长度,或者我可以用逻辑运算符构建查询。

我试着像文档建议的那样做

videos.filter( Video.topics.IN([topics]) )

但这会引发 IN 期望字符串而不是列表对象的错误。

我该怎么做呢?

4

2 回答 2

7

看起来topics已经是一个列表了。因此,您需要在没有其他列表的情况下传递它:

videos.filter( Video.topics.IN(topics) )
于 2013-01-13T16:38:09.357 回答
1

对于一系列主题,您可以使用:

Video.query(Video.topics.IN(topics))

或者对于单个字符串:

Video.query(Video.topics == topic)

来源:https ://cloud.google.com/appengine/docs/standard/python/ndb/queries

于 2017-05-15T02:29:01.373 回答