我有一个父表和两个子表的数据模型。我想根据输入类型文本输入字段更改自定义添加/编辑表单,以便: - 使用预定义元素下拉菜单(使用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的默认视图"添加记录"和"编辑"动作按钮?
祝你好运!
答案 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}}