web2py:如何在SQLFORM.smartgrid中自定义add.edit表单?

时间:2014-11-26 10:13:26

标签: python model-view-controller web web2py

我有一个父表和两个子表的数据模型。我想根据输入类型文本输入字段更改自定义添加/编辑表单,以便: - 使用预定义元素下拉菜单(使用SELECT / OPTION元素制作), - 复选框。

主页面是SQLFORM.smartgrid,带有对子节点的引用(我希望有几个自定义的添加/编辑表单)。

更改的网址例如是:

http://host.com:8000/First/default/index/recipe/edit/recipe/4(父表) http://host.com:8000/First/default/index/recipe/rule.recipe_id/4/new/rule(子表)

如何更改SQLFORM.smartgrid的默认视图"添加记录"和"编辑"动作按钮?

祝你好运!

1 个答案:

答案 0 :(得分:2)

如果您只想更改用于特定字段的表单小部件,则不必直接自定义创建/更新表单。相反,您只需指定适当的验证器和自定义小部件:

db.define_table('mytable',
    Field('field1', requires=IS_IN_SET(['a', 'b', 'c'])),
    Field('field2', requires=IS_IN_SET(['x', 'y', 'z'], multiple=True),
          widget=SQLFORM.widgets.checkboxes.widget))

IS_IN_SET验证器将自动为field1生成一个下拉元素。 field2的默认值是多选框,但"小部件"参数将其更改为复选框。

但是,如果您仍需要进行某些表单自定义,则可以在视图中执行以下操作:

{{if ('new' in request.args) or ('edit' in request.args):}}
    [custom form code goes here]
{{pass}}