我有两个NDB模型类,Book和Author。作者有一个StringProperty“name”和一个auto_add_now“date”,Book有一个PickleProperty“authors”,它是Author类型的对象列表。
我想进行查询并收到所有在作者列表中都有currentAuthor的书籍列表(匹配“名称”并忽略“日期”)。我不认为我可以直接使用.IN,因为日期可能不同。我正在玩设置date = None用于测试目的(因为它对于所有Author对象似乎都是None?这是因为我在本地运行吗?)然后写
books = Book.query(Book.authors.IN([currentAuthor])).fetch()
但返回一个空列表。
答案 0 :(得分:2)
它不能使用PickleProperty
来自文档
PickleProperty - Value是一个Python对象(例如列表或字典或字符串) 可以使用Python的pickle协议进行序列化;数据存储区 泡菜序列化为blob。默认情况下未编入索引。
即使您确实已将其编入索引,您也无法实现IN查询,因为它不知道已将pickle中的实体编入索引作为单独的索引值。
您应该为作者使用重复的StructuredProperty,KeyProperty或StringProperty。然后,您可以按预期执行查询。