如何在web2py中声明一个空查询

时间:2014-11-01 00:55:12

标签: web2py

我想构建一个像这样的动态查询: query =(field1 == val1)&((field2 == val2)|(field2 == val3)| ... |(field2 == valn)) val1到valn保存在list_value列表中。 我的代码类似于:

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

但问题是查询构造不正确。这似乎是空query1声明的问题。 有没有什么干净的方法来编写这段代码?

谢谢!

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

有点黑客攻击:

1.sw
2.esb
3.rotj

example 1
1vs2: winner = 2
2vs3: winner = 2
1vs3: winner = 1
Sorted List: 2,1,3

example 2
1vs3: winner = 1
1vs2: winner = 2 
2vs3: winner = 2
Sorted List: 2,1,3

产生

q = False
q |= db.mytable.myfield != 'value'