1

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

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 功能。

4

2 回答 2

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))

这将在表单中为您提供一个下拉列表,其中仅包含集合中的项目。

于 2012-05-05T19:19:46.200 回答
2

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

Field('games', 'list:string', requires=IS_IN_SET(games_set, multiple=True))
于 2012-05-06T17:41:26.867 回答