Web2py:仅将下拉值限制为登录用户

Web2py: Limiting a dropdown value only to Logged in user

我正在尝试这种形式。我有一个显示表单的页面,其数据库定义如下所示:

db.define_table('nskrelease',
            Field('sprid',length=128,requires=IS_IN_SET(['R3.2', 'R3.3', 'R3.4'],zero=T('choose one'),error_message='must be R3.2 or R3.3  or R3.4 '),label = T('SPR')),
            Field('releaseid',length=128, requires = IS_NOT_EMPTY(error_message='Release ID cant be empty'),label = T('Release')),
            Field('coordinator',requires=IS_EMAIL(error_message='invalid email!') ,label=T('Co-ordinator Email')),
            Field('startdate', 'datetime', default=request.now,requires = IS_NOT_EMPTY(error_message='Start date cant be empty'), label=T('Start date')),
            Field('enddate', 'datetime', default=request.now, requires = IS_NOT_EMPTY(error_message='End date cant be empty'), label=T('End Date')),format='%(%releaseid)s')

db.nskrelease.releaseid.requires = IS_NOT_IN_DB(db,'nskrelease.releaseid')
db.nskrelease.coordinator.requires = IS_IN_DB(db,'auth_user.email','%(email)s')

但这里的问题是 Coordinator 字段显示 db.auth_user 中的所有用户。相反,我需要将其仅限于登录用户。所以我尝试了:

db.nskrelease.coordinator.requires = IS_IN_DB(db(db.nskrelease.coordinator == 'auth.user.email'))

但它给我错误:

TypeError: __init__() takes at least 3 arguments (2 given)

请帮忙。提前致谢。

如果此字段中唯一允许的电子邮件地址是当前登录用户的电子邮件地址,则可以将其设置为默认值并且不要使该字段可写:

Field('coordinator', writable=False,
      default=auth.user.email if auth.user else None,
      update=auth.user.email if auth.user else None)

但是,更好的方法可能是将其设为参考字段,这样您就不必担心在配置文件更新时更新此字段:

Field('coordinator', 'reference auth_user', writable=False,
      default=auth.user_id, represent=lambda v, r: v.email)