web2py - 从IS_IN_DB验证器中删除空白选项

时间:2012-10-18 13:16:41

标签: option web2py validation

在web2py中,假设我通过添加名为“agent_code”的字段修改了默认的auth_user表。该字段应包含另一个表中的值:

auth_table = db.define_table(
    auth.settings.table_user_name,
    Field('first_name', length=128, default=''),
        ...more fields here...,
    Field('auth_age_cod', length=512,default=None))

auth_table.auth_age_cod.requires = \
    IS_IN_DB(db, db.agea.agea_cod,
             '%(agea_cod)s - %(agea_name)s',
             error_message='Agent not in DB')

我希望用户能够在注册时将自己标识为代理。

用户注册表单现在显示允许选择代理的保管箱,但在开始时包含空白选项。由于某些原因,这在我们的系统中是不可接受的。

在调查验证器的源代码之后,我发现IS_IN_DB验证器有一个名为'zero'的参数。默认设置为''(空字符串),并在下拉列表中创建一个空白选项。

因此,要删除空白选项,请将验证器更改为:

IS_IN_DB(db, db.agea.agea_cod,
         '%(agea_cod)s - %(agea_name)s',
         error_message='Agent not in DB',
         zero=None)

1 个答案:

答案 0 :(得分:3)

你的问题不清楚,但如果你问zero IS_IN_DB中的zero论证是出于那个目的,那就是。 web2py manual表示IS_IN_DB中的参数zeroIS_IN_SET中的IS_IN_SET一样

对于zero,手册指出: IS_IN_SET参数是可选的,它确定默认选择的选项的文本,{{1}不接受的选项验证器本身。如果您不想“选择一个”选项,请设置zero=None