web2py 中的外键

Posted

技术标签:

【中文标题】web2py 中的外键【英文标题】:Foreign Keys in web2py 【发布时间】:2012-11-18 11:06:53 【问题描述】:

我不断收到此错误: “DAL”对象没有属性“event_instance”

它指向我的 db_agents 文件作为这一行的罪魁祸首:

('event_instance_id', db.event_instance)

但是,如果我将 event_instance 表的定义移动到该 db_agents 模型文件,错误就会消失,但我会得到一个新的,它引用 event_instance tbl 中的另一个 FKey。有没有办法避免将我所有的 db.define_tables 放在同一个文件中,我想将它们分开。

【问题讨论】:

【参考方案1】:

你可以这样做:

Field('event_instance_id', 'reference event_instance')

使用该替代语法,不必已经定义“event_instance”表。

另外,请注意模型文件是按字母顺序执行的,因此只要“event_instance”表在按字母顺序较早的模型文件中定义,您的原始代码就可以工作。

【讨论】:

我现在得到一个不同的错误,即使我在外键定义中专门使用“引用”。我认为只要我使用引用而不是 db.tbl,我定义表的顺序并不重要。 那你肯定做错了什么。如果使用上述语法,则不必已经定义 event_instance 表。如果您既不显示代码也不显示您收到的错误,就不可能说出您的问题。

以上是关于web2py 中的外键的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础之 主键外键设置

外键为啥必须是唯一键?为啥至少唯一键才能作为其他表的外键?不唯一为啥不可以?

数据库—超键候选键主键外键

主键外键和子查询

sql中啥叫主键表,啥叫外键表

主键外键和索引的区别?