AppEngine:查询没有特定属性条件的记录的数据存储

时间:2010-10-05 00:22:41

标签: python google-app-engine google-cloud-datastore

我想做一个用户可能会或不会选择过滤器的查询,但我不想创建2个索引(表)。

value=self.request.get('filter')
if value:
    results=Entity.all().filter('p1 =','v1').filter('p2 =','v2').filter('filter_property =',value)
else:
    results=Entity.all().filter('p1 =','v1').filter('p2 =','v2')

我可以订购filter_property。像这样在最后一行:

    results=Entity.all().filter('p1 =','v1').filter('p2 =','v2').order('filter_property')
如果我能够或不能过滤p1(property1)和p2(property2),这将是不好的。我想做点什么:

value = self.request.get('filter')
if value:
    operator = '='
else:
    operator = '!='
results=Entity.all().filter('p1 =','v1').filter('p2 =','v2').filter('filter_property '+operator,value).order('p4')

“。order('p4')”将使用操作数失败 BadArgumentError !=。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

听起来你已经很好地处理了替代方案。如果希望数据存储区为每个数据存储区使用相同的索引,则可以添加order子句来替换过滤器;否则,你会遇到多个索引。