我在一个表中有三个必须是唯一的字段,并且基于对这个问题的回答,我尝试了以下操作(我想我理解了这一点,但是显然不是... monkey-see,Monkey-do):
db.define_table('Person_certification',
Field('Person', db.Person),
Field('Certification', db.Certification),
Field('Start_date', 'date',
requires=IS_NOT_IN_DB(db(db.Person_certification.Person==request.vars.Person
& dp.Person_certification.Certification==request.vars.Certification),
'Person_certification.Start_date')),
Field('End_date', 'date'),
format='%(Person)s %(Certification)s')
这三个字段是“人员”,“证书”和“开始日期”。 当我尝试使用它时,我得到:
<type 'exceptions.KeyError'> 'Person_certification'
追溯是指“要求”行。 (表中已经有数据(三个字段上没有重复);代码是否在SELECT期间试图进行检查?)
我在这里想念什么?
抱歉,原始答案不正确(现已修复)。 由于尚未定义表,因此无法在表定义本身中引用它。 而是在表定义之后设置验证器:
db.Person_certification.start_date.requires = IS_NOT_IN_DB(...)