2013-09-05 49 views
0

我使用SQLFORM.factory创建自定义形式如下:的web2py SQLFORM.factory类型和默认属性

searchform=SQLFORM.factory(
    Field('useraccount','integer',default=None), 
    Field('group','unicode',default=None), 
    submit_button = 'Search')  

按我的理解useraccount场的类型应该整数而如果用户不提供此值,我应该得到request.vars.useraccount作为。但它接受字符串值,如果用户不提供此值,我会在request.vars.useraccount中获得空字符串。

请问我该怎么做才能做到这一点。

谢谢。

回答

1

在窗体中,整数字段只是CSS类设置为“整数”的字符串输入,因此提交的值以及存储在request.vars中的值是字符串。处理表单时,字符串值将转换为整数字段的整数,因此您应该使用form.vars.useraccount而不是request.vars.useraccount。当字段留空时,您会发现form.vars.useraccountNone,当提交值时为None

+0

感谢您的回复。我试图使用form.vars.useraccount,它会返回整数值,如果提供。但是form.vars.group返回'',如果没有提供。我认为它应该返回None值。 – gliese581g

+0

不,因为“组”是一个字符串字段,空字符串是一个有效的值,所以它不适合web2py假设它应该是'None'而不是空的(那么就没有办法输入空字符串,如果这是你想要的)。如果要将空字符串转换为'None',则必须明确执行此操作(请参阅http://stackoverflow.com/a/18638236/440323)。 – Anthony

+0

它的工作!万分感谢! – gliese581g