我正在尝试使用弄清楚如何子查询使用过滤器的查询。从我到目前为止使用.filter()时所发现的,它改变了原始查询,导致第二个.filter()也必须匹配第一个过滤器。
我想做这样的事情:
modules = data.Modules.all().filter('page = ', page.key())
modules.filter('name = ', 'Test')
modules.filter('name = ', 'Test2')
我无法让“Test2”过滤器工作。我目前唯一的解决方案是进行所有新查询。
data.Modules.all().filter('page = ', page.key()).filter('name = ', "Test").get()
data.Modules.all().filter('page = ', page.key()).filter('name = ', "Test2").get()
或者像GQL一样写。但对我而言,接缝非常愚蠢。
我看过使用祖先,但我不太明白它,老实说,不知道是不是这样。
有什么想法吗?
..弗雷德里克
答案 0 :(得分:3)
您尝试执行的操作似乎是OR查询,App Engine不支持。您可以使用IN查询,通过为您执行多个查询来模拟此问题。
你尝试的第一件事不起作用的原因是你试图过滤你的查询,以便你的结果与“测试”和“测试2”相匹配,这对于非列表属性显然永远不会成立