【问题标题】:How to define list of enumerated values in Web2Py如何在 Web2Py 中定义枚举值列表
【发布时间】:2014-06-13 13:11:13
【问题描述】:

我用 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”方式完成吗?还是我必须求助于在数据库中创建一个新的周末表并为组织创建一个外键?

【问题讨论】:

    标签: python web2py


    【解决方案1】:

    使用“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))
    

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

    IS_IN_DB 验证器也接受 multiple 参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      相关资源
      最近更新 更多