1

我有三个字段在表中必须是唯一的,并且根据对这个问题的回答,我尝试了以下操作(我我理解这一点,但显然不是......猴子看,猴子做):

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')

这三个字段是 Person、Certification 和 Start_date。当我尝试使用它时,我得到:

<type 'exceptions.KeyError'> 'Person_certification'

回溯指的是“需要”行。(表中已经有数据(三个字段上没有重复数据);代码是否试图在 SELECT 期间进行检查?)

我在这里想念什么?

4

1 回答 1

1

抱歉,原始答案不正确(现已修复)。由于该表尚未定义,因此您无法在表定义本身中引用它。相反,在表定义之后设置验证器:

db.Person_certification.start_date.requires = IS_NOT_IN_DB(...)
于 2012-06-26T03:37:57.137 回答