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')
而對於第二個要求,當我試圖給的,而不是給我一個矛盾的輸入期望的錯誤,票證被髮布。