0
我有一个nsksystem表,它从两个字段nskmachinename和另一个表nskrelease的nskreleaseid获取值。 要求是nsksystem.nskreleaseid + nsksystem.nskmachinename应该是唯一的,nsksystem.nskreleaseid来自nskrlease数据库。我没有在表中强制执行任何约束。单个字段的多个验证器
db.define_table('nsksystem',
Field('nskuserid',length=512,requires=IS_EMAIL(error_message='invalid email!'),default = auth.user.email if auth.user else None, label=T('Email ID'),writable=False),
Field('nskmachinename', length=128, requires = IS_IN_DB(db,'nskrelease.nskname','%(nskname)s',error_message='Machine not registerd for release.'), label = T('Machine Name')),
Field('nskpassword', 'password', length=512,readable=False, label=T('Machine Password')),
Field('nskreleaseid',length=128, default='',label = T('Release'))
)
db.nsksystem.nskreleaseid.requires = [IS_IN_DB(db,'nskrelease.releaseid'), IS_NOT_IN_DB(db(db.nsksystem.nskmachinename == request.vars.nskmachinename), 'nsksystem.releaseid', error_message='Machine is already registered to the specified release.')]
在上面的代码中的第一个要求是强制执行,但我没有看到一个下拉的
IS_IN_DB(db,'nskrelease.releaseid')
而对于第二个要求,当我试图给的,而不是给我一个矛盾的输入期望的错误,票证被发布。