从web2py中的SQLFORM(SQLFORM.grid)向引用表添加新的(丢失)条目

时间:2018-10-21 09:47:11

标签: python-3.x web2py

在这种最小的情况下,我有,其中引用了另一个表条目。 当我添加 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}}

2 个答案:

答案 0 :(得分:0)

您可以使用SQLFORM.grid的左侧选项来管理它

  

left是用于构建... select(left = ...)的可选左连接表达式。

将其与field选项结合使用以指定应显示的两个表的字段是有意义的。

  

fields是要从数据库中获取的字段的列表。它还用于确定在网格视图中显示哪些字段。但是,它无法控制在用于编辑行的单独表单中显示的内容。为此,请使用数据库字段的可读和可写属性。

别忘了通过field_id选项引用表头

  

field_id必须是要用作ID的表的字段,例如db.mytable.id。当网格查询是多个表的联接时,这很有用。网格上的任何操作按钮(添加记录,查看,编辑,删除)将在db.mytable上起作用。

cf。 SQLFORM.grid signature

答案 1 :(得分:0)

您必须在查询中指定关系。 您可以尝试这样的事情:

def entries_edit():
    query = db(db.main_entries.type == db.entry_type.id)
    form = SQLFORM.grid(query)
    return dict(form=form)