我正在学习 web2py,但遇到了一些麻烦。我有一个一对多的关系,定义如下:
db.define_table('dog',
Field('name', requires=IS_NOT_EMPTY()))
db.define_table('person',
Field('name', requires=IS_NOT_EMPTY()),
Field('dogs', 'list:reference dog'))
db.person.dogs.widget=SQLFORM.widgets.checkboxes.widget
一只狗有一个主人,但一个主人可以养多只狗。
在我的控制器中,我创建了一个表单,其中包含一个人姓名的文本字段,以及一个表示为复选框的狗列表。
创建表单的控制器代码很简单:
form = SQLFORM(db.person) # rendered with {{=form}} in views
这可行,但在复选框列表的末尾有一个奇怪的文本输入,它被标记为禁用:
<tr><td><input class="hidden" disabled="disabled" name="dogs" type="text" /></td></tr>
这实际上并没有隐藏,只是变灰了。
我查看了 web2py 源代码,复选框小部件位于 web2py.gluon.sqlhtml 中,但我很难解释为什么它将这个禁用的输入附加到复选框列表中。
谁能澄清为什么有这个禁用的输入,或者如何在没有这个问题的情况下正确创建这个表单?