在这种最小的情况下,我有表,其中引用了另一个表条目。 当我添加 main_entries 条目时,我具有来自引用表的条目的下拉列表。当我需要的引用表中没有条目时,如何从该视图创建此新条目(即不保留 main_entries 表单)?
有这种情况:
型号:
db.define_table('main_entries',
Field('type', 'reference entry_type' )
)
db.define_table('entry_type',
Field('label')
)
控制器:
def entries_edit():
form = SQLFORM.grid(db.main_entries)
return dict(form=form)
查看:
{{extend 'layout.html'}}
{{=form}}
答案 0 :(得分:0)
您可以使用SQLFORM.grid的左侧选项来管理它
left是用于构建... select(left = ...)的可选左连接表达式。
将其与field选项结合使用以指定应显示的两个表的字段是有意义的。
fields是要从数据库中获取的字段的列表。它还用于确定在网格视图中显示哪些字段。但是,它无法控制在用于编辑行的单独表单中显示的内容。为此,请使用数据库字段的可读和可写属性。
别忘了通过field_id选项引用表头
field_id必须是要用作ID的表的字段,例如db.mytable.id。当网格查询是多个表的联接时,这很有用。网格上的任何操作按钮(添加记录,查看,编辑,删除)将在db.mytable上起作用。
答案 1 :(得分:0)
您必须在查询中指定关系。 您可以尝试这样的事情:
def entries_edit():
query = db(db.main_entries.type == db.entry_type.id)
form = SQLFORM.grid(query)
return dict(form=form)