2009-10-08 36 views
2

我有一个使用web2py的应用程序。web2py - 生成多选列表

我在数据库中称为成员表:

db.define_table("member", 
    SQLField("membership_id", "integer",notnull=True), 
    SQLField("first_name", "string", notnull=True,length=100), 
    SQLField("region", db.region)) 

,我想显示的区域字段多选名单。

我怎样才能做到这一点?

在此先感谢。

回答

3

您可以使用IS_IN_DB()从另一个数据库表中创建一个选择框:

form = SQLFORM.factory(
    Field('region', requires=IS_IN_DB(db, db.region.id, '%(name)s')) 
) 

或者使用IS_IN_SET()手动数据:

regions = (1, 'a'), (2, 'b'), (3, 'c') 
form = SQLFORM.factory(
    Field('region', requires=IS_IN_SET([r[0] for r in regions], labels=[r[1] for r in regions])) 
) 
+0

我使用的第一个解决方案,但是当我从列表中选择两个区域有一条错误消息,表示“\t 值不在数据库中!”我不知道为什么? – Neveen 2009-10-11 09:43:21

+0

它适用于单个地区吗? – hoju 2009-10-11 23:32:18