Mysql sqlform和#x27中的过滤器下拉列表;查询';对象不可调用

Mysql sqlform和#x27中的过滤器下拉列表;查询';对象不可调用,mysql,web2py,Mysql,Web2py,我想插入一个包含两个字段的表单:coursename、teacher\u id(reference auth\u user),但是teacher\u id字段显示auth\u user中的所有id,我只想在下拉列表中显示用户的id whoes role=teacher。因为所有用户都在同一个表中(auth\u user) 这就是我所做的:但它显示了一个错误:'Query'对象是不可调用的 query=(db.auth_membership.user_id==db.auth_user.id)(db

我想插入一个包含两个字段的表单:coursename、teacher\u id(reference auth\u user),但是teacher\u id字段显示auth\u user中的所有id,我只想在下拉列表中显示用户的id whoes role=teacher。因为所有用户都在同一个表中(auth\u user) 这就是我所做的:但它显示了一个错误:'Query'对象是不可调用的

query=(db.auth_membership.user_id==db.auth_user.id)(db.auth_membership.group_id==db.auth_group.id)(db.auth_group.role=='teacher')
db.courses.teacher_id.requires=IS_IN_DB(db(query),'auth_user.id')
form=SQLFORM(db.courses)
return dict(form=form)
谢谢 简

上述语法无效。集合对象是可调用的,调用时会返回另一个集合对象,因此可以链接集合:

myset = db(query1)(query2)(query3)
如果您想使用查询对象,则必须使用“&”运算符进行显式连接:

myquery = query1 & query2 & query3

谢谢你,安东尼。我的问题解决了。正确的查询是:query=(db.auth\u membership.user\u id==db.auth\u user.id)&(db.auth\u membership.group\u id==db.auth\u group.id)&(db.auth\u group.role='teacher')
myquery = query1 & query2 & query3