如何使用google appengine ndb中的列表对象查询重复属性

时间:2013-01-12 07:36:21

标签: google-app-engine app-engine-ndb djangoappengine

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

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

我有一个查询对象:

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

主题是重复的字符串属性

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

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

我尝试过像文档建议那样做

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

但是抛出IN期望字符串而不是列表对象的错误。

我该怎么做?

2 个答案:

答案 0 :(得分:7)

看起来topics已经是一个列表了。所以你需要传递它而没有其他列表:

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

答案 1 :(得分:1)

对于主题,您可以使用:

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

或者单个字符串:

Video.query(Video.topics == topic)

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