我想知道为什么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')
答案 0 :(得分:1)
SQLFORM.factory
通过创建虚拟DAL
实例和虚拟DAL
表来工作。默认情况下,虚拟表名称为“no_table”,但您可以通过table_name
参数更改它。
当您将整个表传递给SQLFORM.factory
时,它只是从这些表中提取字段,但在构建HTML小部件ID时它不会保留表名(相反,它只是使用虚拟表名来构造id的)。在One form for multiple tables的书籍部分中,这就是为什么它说:
仅当表格没有相同的字段名称时才有效。
如果两个表中都有相同名称的字段,则它们最终会使用相同的ID。