Вот мое определение базы данных:
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.')
Пожалуйста, помогите мне в этом.