如何更改 SQLform 中复选框标签的位置

How to change the location of the checkbox labels in SQLform

有没有简单的方法来重新定位复选框的标签?我想以与其他控件相同的方式在左侧显示它们。

您只需要制作自己的表单样式(复制 formstyle_bootstrap3_inline_factory,我猜您正在使用)

然后删除以不同方式处理复选框的规则:

elif controls['_type'] == 'checkbox':
                label['_for'] = None
                label.insert(0, controls)
                label.insert(1, ' ')
                _controls = DIV(DIV(label, _help, _class="checkbox"),
                                _class="%s %s" % (offset_class, col_class))
                label = ''

谢谢蒂姆的回答。这告诉了我我需要知道的一切。这是我必须做的:

  1. gluon\sqlhtml.py中找到相关函数。对我来说是 formstyle_bootstrap4_inline_factory

  2. formstyle_boostrap4_inline_factory函数中的_inner函数复制到我的应用程序中并将其重命名为formstyle_myapp(将其放在模型文件中可能是最简单的)

  3. gluon.sqlhtml复制add_class函数并将其添加到formstyle_myapp函数中。这使得它仅对 formstyle_myapp 可见。

  4. 更改 db.py 中的默认 formstyle 设置以指向新函数:response.formstyle = formstyle_myapp

  5. 最后,调整 formstyle_myapp 的复选框部分,使标签位于所有其他标签下方的左侧,复选框位于所有其他控件下方的右侧:

     elif controls['_type'] == 'checkbox' or controls['_type'] == 'radio':
         _controls = DIV(controls, _class="%s" % col_class)