0

我在 web2py 工作,我必须制作一个 adHoc 用户管理表单,更准确地说,我正在制作一个带有“角色过滤器”的表格。重要的是要知道我在 GAE 中并且必须手动完成连接。这是我的代码:

auth_user_with_role = db(db.auth_membership.group_id==request.vars.role).select(db.auth_membership.ALL)
auth_user_ids_role_selected=db(db.auth_user.id<1).select(db.auth_user.first_name) #This is a Hack, now I have a ROWS object
for user_role in auth_user_with_role:
    user = db(db.auth_user.id==user_role.user_id).select(db.auth_user.first_name)
    auth_user_ids_role_selected = auth_user_ids_role_selected & user

使用此代码,我在组表和用户表之间建立了连接。问题是在用户变量中,我让用户拥有所有列,而不仅仅是“first_name”列。投影不工作还是我做错了什么?感谢您的帮助!

4

1 回答 1

0

这是答案:

db(db.auth_user.id==user_role.user_id).select(db.auth_user.first_name, projection=True)

Projection=True 是使用 Google App Engine 在 Web2Py 中获得投影所必需的。

为什么?出于向后兼容性的原因。在 GAE 支持投影查询之前,默认行为是返回所有列。当我们添加投影支持时,我不想破坏有时列出字段但没有投影索引的现有应用程序

致谢:Christian Foster Howes 在 web2py Google Group 中回答了这个问题。

于 2013-06-03T08:34:26.787 回答