我想做一个用户可能会或不会选择过滤器的查询,但我不想创建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 !=。
我该怎么办?
答案 0 :(得分:0)
听起来你已经很好地处理了替代方案。如果希望数据存储区为每个数据存储区使用相同的索引,则可以添加order子句来替换过滤器;否则,你会遇到多个索引。