[英]How to filter more than one property in Google AppEngine? (python)
我在使用使用多个过滤器的查询时遇到问题(我在使用NDB而不是DB):
...
foo = something.query(something.a==5, something.b<8, something.c<3).order(something.b).fetch(1)
...
我收到此错误:
Only one inequality filter per query is supported.
我可以使用以下方法解决此问题:
...
foo = something.query(something.a==5, something.b<8).order(something.b).fetch()
#loop through each one of those rows and add those who have foo.c<3 to some array
但是这种解决方案并不是很好。 有人有更好的主意吗?
谢谢
我遇到了一个相关的问题,我使用了ComputedProperty来解决它。 例如,您可能有一个ComputedProperty(lambda self:self.b <8和self.c <3),然后仅查询该ComputedProperty是否为真。
您需要使用query.AND或query.OR :
qry = Article.query(query.AND(Article.tags == 'python',
query.OR(Article.tags.IN(['ruby', 'jruby']),
query.AND(Article.tags == 'php',
Article.tags != 'perl'))))
这是我解决的方法:
foo = something.query(ndb.query.AND(something.a==5, something.b<8, ndb.query.OR(something.c==1, something.c==2)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.