3

在 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 验证器有一个名为“零”的参数。默认设置为 ''(空字符串)并在下拉列表中创建一个空白选项。

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

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

1 回答 1

3

您的问题不清楚,但如果您要问的zero论点IS_IN_DB是否是为了这个目的,那就是。web2py 手册说参数zeroin 的工作方式IS_IN_DB类似于zeroIS_IN_SET

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

于 2013-03-18T09:49:08.717 回答