这是我的数据库定义:
db.define_table('emsAlertTokens',
Field('emsrelease','string',default=session.releasefield,writable=False,label=T('Release')),
Field('emsmachine','string',default=session.machinefield,writable=False,label=T('Machine')),
Field('emsstartdate','datetime',default=request.now,label=T('Start Date')),
Field('emsenddate','datetime',IS_NOT_EMPTY(error_message='Please specify the End Date.'), label=T('End Date')),
Field('errorgrepfile','upload',requires=IS_NOT_EMPTY(error_message='Please upload a valid error tokens file'),custom_store=ems_file, custom_retrieve=ems_retrieve, autodelete=True, uploadfield=True, uploadfs=None, label=T('Error Tokens')),
Field('tokenname','string',requires=IS_NOT_EMPTY('What would you call your token file?'),label=T('Token File Name')))
您可以注意到 emsmachine 和 emsrelease 字段来自会话。我的要求是使这两个值的组合是唯一的。
我尝试使用下面的验证器,但它不起作用。
db.emsAlertTokens.emsrelease.requires = IS_NOT_IN_DB(db(db.emsAlertTokens.emsmachine == session.machinefield), 'emsAlertTokens.emsrelease', error_message='EMS token file already exist for this release.')
即使这样也行不通:
db.emsAlertTokens.emsrelease.requires = IS_NOT_IN_DB(db(db.emsAlertTokens.emsmachine == request.vars.emsmachine), 'emsAlertTokens.emsrelease', error_message='EMS token file already exist for this release.')
请帮助我。