2009-10-08 6 views
2

J'ai une application utilisant web2py.web2py - générer une liste multisélect

J'ai une table dans la base de données des membres appelés:

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

et je veux afficher le champ de la région comme la liste multiSelect.

Comment est-ce que je peux faire ceci?

Merci d'avance.

Répondre

3

Vous pouvez utiliser IS_IN_DB() pour créer une boîte de sélection d'une autre table de base de données:

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

Ou utilisez IS_IN_SET() pour les données manuelle:

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

i utilisé la première solution, mais quand je sélectionnez deux régions de la liste il y a un message d'erreur dit "\t valeur pas dans la base de données!" Je ne sais pas pourquoi ?? – Neveen

+0

Cela fonctionne-t-il pour une seule région? – hoju

Questions connexes