2014-11-01 33 views
0

我想构建如下动态查询: query =(field1 == val1)&((field2 == val2)|(field2 == val3)| ... | (field2 == valn)) val1 to valn保存在list list list_value中。 我的代码会是这样的:如何在web2py中声明空查询

query = field1==val1 
query1 = ''        <--Problem 
list_value=[val2, va3, ..., valn] 
for val in list_value: 
    query1 |= field2==val 
query = query&query1 

但这里的问题是,查询不正确构建。这似乎是空的query1声明的问题。 是否有任何干净的方式来写这段代码?

谢谢!

回答

0

最简单的方法是使用.belongs方法:

query = (field1 == val1) & field2.belongs(list_value) 

如果你想坚持原来的方法,你可以这样做:

query1 = reduce(lambda a, b: a | b, (field2 == v for v in list_value)) 
+0

太谢谢你了! '.belongs'解决了我的问题。这是一个更好,更整洁的实现。我非常感谢你的帮助! – 2014-11-04 18:48:27