我需要构建一个带有重复属性的逻辑查询,但无法使其工作。 我有一个带主题的列表对象。
topics = [u'string1', u'string2', ...]
我有一个查询对象:
videos = Video.query()
videos.count()
=> 19
主题是重复的字符串属性
class Video
topics = ndb.StringProperty(repeated=True)
我想要返回包含主题string1
或string2
的视频。我之前也不知道列表对象的长度,或者我可以用逻辑运算符来构建查询。
我尝试过像文档建议那样做
videos.filter( Video.topics.IN([topics]) )
但是抛出IN期望字符串而不是列表对象的错误。
我该怎么做?
答案 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