web2py SQLFORM.factory no_table

时间:2013-02-25 06:25:08

标签: forms web2py

我想知道为什么web2py SQLFORM.factory中的变量有一个no_table_ [name]而不是实际的表名?是否有任何遗漏代码。

e.g

form = SQLFORM.factory(db.event, db.event_permissions, record=record, fields=fields, submit_button='Edit Event Master')

1 个答案:

答案 0 :(得分:1)

SQLFORM.factory通过创建虚拟DAL实例和虚拟DAL表来工作。默认情况下,虚拟表名称为“no_table”,但您可以通过table_name参数更改它。

当您将整个表传递给SQLFORM.factory时,它只是从这些表中提取字段,但在构建HTML小部件ID时它不会保留表名(相反,它只是使用虚拟表名来构造id的)。在One form for multiple tables的书籍部分中,这就是为什么它说:

  

仅当表格没有相同的字段名称时才有效。

如果两个表中都有相同名称的字段,则它们最终会使用相同的ID。