从web2py中的列表中选择包含静态内容的窗口小部件模型窗体

时间:2012-05-05 10:30:54

标签: python web2py

我有一个简单的模型如下:

games = ['soccer', 'hockey', 'baseball', 'cricket', 'basketball']
db.define_table('Sportsmen',
                Field('gamer', db.auth_user),
                Field('games', length=20),
                Field('experience', 'integer', default=0))

我想要做的就是通过sql表单在下拉菜单中填充游戏列表。我看到了selectwidget,但是这些示例有点复杂(它们将所有选项放在数据库中并将该数据库渲染到下拉列表中,对于我的情况,只有一个小列表就足够了)用于这个小目的。找到类似的django功能here

2 个答案:

答案 0 :(得分:2)

您可以使用requires参数创建该下拉列表。

games_set = set('soccer', 'hockey', 'baseball', 'cricket', 'basketball')
db.define_table('Sportsmen',
            Field('gamer', db.auth_user),
            Field('games', length=20, 
                requires=IS_IN_SET(games_set))),
            Field('experience', 'integer', default=0))

这将为您提供表格中的下拉列表,其中只包含该组中的项目。

答案 1 :(得分:2)

如果每个玩家可以拥有多个游戏并且您希望将它们作为列表存储在单个字段中,则可以使用list:string字段类型并将multiple=True添加到IS_IN_SET()验证程序

Field('games', 'list:string', requires=IS_IN_SET(games_set, multiple=True))