我从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。
答案 0 :(得分:2)
web2py创建的表使用" id" field作为主键,因此引用字段设置引用" id"的外键约束。字段。
如果旧数据库表中的主键是一个自动递增的整数字段,但是恰好没有命名为" id",您仍然可以让web2py将该字段用作主要字段通过指定" id"字段类型:
db.define_table('legacy_table',
Field('my_id', 'id'), ...)
但是,如果主键不是单个自动递增整数字段,则应该查看keyed tables上的文档。您可以指定表的主键,在这种情况下,web2py不会创建或期望" id"领域。但是,功能有一些限制。