web2py中的三字段组合键

问题描述 投票:1回答:1

我在一个表中有三个必须是唯一的字段,并且基于对这个问题回答,我尝试了以下操作(我我理解了这一点,但是显然不是... 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期间试图进行检查?)

我在这里想念什么?

python web2py composite-key
1个回答
1
投票

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

db.Person_certification.start_date.requires = IS_NOT_IN_DB(...)
© www.soinside.com 2019 - 2024. All rights reserved.