我遍历一个表单对象来更改所有类:
form = crud.create(db.messages, next = URL('index'))
parts = ['title', 'body', 'subject'] # corresponding fields
classes = 'form-control col-md-12' # my classes
for p in parts:
form.custom.widget[p]['_class'] = '%s %s' % (classes, form.custom.widget[p]['_type'])
这是有效的 - 但是:subject
是一个自动完成小部件:
db.messages.subject.widget = SQLFORM.widgets.autocomplete(...)
此处_class
未更改(或之后再次更改?)
如何解决这个问题? 谢谢!
答案 0 :(得分:2)
自动完成小部件是一个TAG
对象,它包含两个组件,第一个组件是INPUT
元素。所以,做一些像:
if p == 'subject':
form.custom.widget[p][0].add_class(classes)
注意,您可以使用add_class
方法将类添加到具有现有类的元素。
此外,您可能会看到将crud.settings.formstyle
设置为" bootstrap3_stacked"而不是手动更改所有类。或" bootstrap3_inline"适合你。如果没有,您还可以编写自定义formstyle函数来生成所需的确切表单布局。