web2py:单选按钮无法在SQLFORM上呈现错误

时间:2011-05-26 18:36:51

标签: web2py

我正在使用带有SQLFORM的自定义单选按钮,如下所示:

def radioboxes(field,value):
    items=[DIV(name,INPUT(_type='radio',_value=key,_name=field.name,value=value), _class='radio')
       for key,name in field.requires.options() if key]
    return items

db.define_table('table1',
    Field('name', 'string', length=16, required=True, unique=True, ),
    Field('shape', 'string', length=12, default='star', widget=radioboxes, requires=IS_IN_SET(shapes)))

我用它来编辑表格

record = db.table1(session.table1_id)
form = SQLFORM(db.table1, record, fields=['name', 'shape'], showid=False, deletable=True, delete_label='Delete', col3=col3)     # edit/delete

这很有效,除非表单中有错误 - 如果我对名称字段使用非唯一值,我会得到预期的错误消息,但是单选按钮不再正确呈现 - 它们会出现为:

[<gluon.html.DIV object at 0x08C9F850>, <gluon.html.DIV object at 0x08C9F130>, <gluon.html.DIV object at 0x08C9FFD0>, <gluon.html.DIV object at 0x08C9F070>, <gluon.html.DIV object at 0x08C9FD10>, <gluon.html.DIV object at 0x08C9F8F0>, <gluon.html.DIV object at 0x08C9FE10>, <gluon.html.DIV object at 0x08C9FF90>, <gluon.html.DIV object at 0x08C9FE90>, <gluon.html.DIV object at 0x08C9F6B0>, <gluon.html.DIV object at 0x08C9F610>]

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我通过将生成的单选按钮括在他们自己的div中来修复它:

def radioboxes(field,value):
items=[DIV(name,INPUT(_type='radio',_value=key,_name=field.name,value=value), _class='radio')
       for key,name in field.requires.options() if key]
return DIV(*items)

(在回程中添加了DIV)