2010-02-10 32 views
1

我想弄清楚如何子查询使用过滤器的查询。根据我在使用.filter()时已经发现的情况,它改变了原来的查询,导致第二个.filter()也必须匹配第一个过滤器。在谷歌应用引擎中使用子过滤器/查询

我想作这样的事:

​​

我不能得到“Test2的”过滤器的工作。我目前唯一的解决方案是制作所有新的查询。

data.Modules.all().filter('page = ', page.key()).filter('name = ', "Test").get() 
data.Modules.all().filter('page = ', page.key()).filter('name = ', "Test2").get() 

或者写成与GQL相同。但对我来说,它的接缝非常愚蠢。

我看过使用祖先,但我不太明白它,老实说,不知道如果这是要走的路。

任何想法?

..fredrik

回答

3

看来,你想要做的是一个或查询未在App Engine的支持。您可以使用IN查询,通过为您执行多个查询来模拟此查询。

您尝试的第一件事不起作用的原因是您正试图过滤您的查询,以便您的结果与“测试”和“测试2”相匹配,显然这对于​​非列表属性。

+0

谢谢。如果我使用IN操作符进行查询,那么它们是如何分开的?如果我想将结果与对象的“测试”和“Test2”匹配到另一个? – fredrik 2010-02-10 15:21:39

+0

使用Query接口,只需传递一个python参数列表即可进行匹配。如果你想在不同的对象而不是结果列表中匹配,你需要完成2个完全独立的查询,就像任何数据库引擎一样。 – geoffspear 2010-02-10 16:00:26

+0

首先,你似乎是我的所有问题之一。谢谢。 :) 因为我只需要另一个StringProperty在相应的名称是什么,我使用IN运算符让他们所有的字典。然后,我可以将它与modules.Test,modules.Test2一起使用。谢谢! – fredrik 2010-02-10 21:30:54

相关问题