Web2py:使用带有id字段以外的字段的引用

时间:2014-03-18 14:05:49

标签: postgresql data-access-layer web2py

我从web2py DAL文档中看到,要向字段添加外键引用,我必须指定

db.define_table('thing',
                Field('name'),
                Field('owner_id', 'reference person'))

人的架构

db.define_table('person',
                Field('name'),
                format='%(name)s')

此参考语法的问题在于,默认情况下,它假定基表中引用字段的id。假设我想在thing表中使用某个属性来引用person的name属性(或id以外的任何属性),有没有办法这样做?

我正在使用遗留数据库,该数据库本身具有id,并且无法使用web2py创建的id字段重置此ID。

1 个答案:

答案 0 :(得分:2)

web2py创建的表使用" id" field作为主键,因此引用字段设置引用" id"的外键约束。字段。

如果旧数据库表中的主键是一个自动递增的整数字段,但是恰好没有命名为" id",您仍然可以让web2py将该字段用作主要字段通过指定" id"字段类型:

db.define_table('legacy_table',
    Field('my_id', 'id'), ...)

但是,如果主键不是单个自动递增整数字段,则应该查看keyed tables上的文档。您可以指定表的主键,在这种情况下,web2py不会创建或期望" id"领域。但是,功能有一些限制。