web2py中的三字段复合键

时间:2012-06-26 02:58:45

标签: python web2py composite-key

我有三个字段在表格中必须是唯一的,并且基于answer to this question我尝试了以下内容(我认为我理解这一点,但显然不是......猴子 - 看,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')

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

<type 'exceptions.KeyError'> 'Person_certification'

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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

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

db.Person_certification.start_date.requires = IS_NOT_IN_DB(...)