如何在Web2Py中定义枚举值列表

时间:2014-06-13 13:11:13

标签: python web2py

我使用Web2Py框架开发了一个网站。

它提供了一种定义枚举值的方法,如下所示。

我需要定义一个表格,如下所示。

Field('state','string', length=10, requires=IS_IN_SET(('open','closed','not_open')))

另外,我可以定义一个字段,列出下面给出的值。

Field('emails','list:string')

但是,结合这个的语法是什么? 我需要为组织定义周末天数,这应该超过1个。

我尝试了以下内容。

db.define_table('organization',
    Field('name','string', requires=IS_NOT_EMPTY()),
    Field('description','text'),
    Field('weekends','list:string', length=10, requires=IS_IN_SET(('sunday','monday','tuesday','wednesday','thursday','friday','saturday'))),
    redefine=migrate_flag
)

但它只定义了一个带有单个值的枚举。 我通过在那里创建一个新的数据库记录在Web2Py appadmin界面中创建新记录来验证这一点。我只能为weekends字段输入一个值。

这可以在' web2py'办法?或者我是否必须在数据库中创建一个新的周末表并为组织创建一个外键?

1 个答案:

答案 0 :(得分:2)

使用“multiple”参数允许/需要多个选择:

IS_IN_SET(('sunday','monday','tuesday','wednesday','thursday','friday','saturday'),
          multiple=True)

或者如果您想要两个选择:

IS_IN_SET(('sunday','monday','tuesday','wednesday','thursday','friday','saturday'),
          multiple=(2, 2))

如果multipleTrue,则会允许零个或多个选择。 multiple也可以是一个元组,指定允许的最小和最大选择数。

IS_IN_DB验证程序也采用multiple参数。