For starters, I'm not sure the syntax is correct for multiple validators. 
 The Web2py manual states they need to be in the form of a list.

http://web2py.com/books/default/chapter/29/7#Validators

Also notice I have cleaned up the closing parends.

db.abonnement.destinataire_id.requires = [
   IS_IN_DB(db, 'destinataire.id', '%(email)s',), 
   IS_NOT_IN_DB(db(db.abonnement.mailinglist_id==request.vars.mailinglist_id
), 'abonnement.destinataire_id')
)]

To change from a dropdown box to checkboxes, you would use widgets.  Check 
out http://web2py.com/books/default/chapter/29/7#Widgets

On Monday, August 6, 2012 12:52:54 PM UTC-4, goabbear wrote:
>
> Hi all,
> I have tried django before and I want to give a try to web2py because it 
> looks more language natural, but I run into a problem (sorry if my question 
> is stupid) :
> in db.py :
> ########################
>
> db.define_table('destinataire',
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('email', unique=True, 
> required=True, length=30),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('nom', length=30),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('prenom', length=30),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('entreprise', length=30),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('fax', length=10),
>                 format = '%(email)s')
>
> db.define_table('mailinglist',
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('nom', unique=True, 
> required=True, length=30),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('description', 
> required=True, length=150),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('declencheur', 
> required=True, length=30),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('public', 'boolean'),
>                 format = '%(nom)s')
>
> db.define_table('abonnement',
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('destinataire_id', 
> db.destinataire),
>                 Field 
> <http://127.0.0.1:8000/examples/global/vars/Field>('mailinglist_id', 
> db.mailinglist)
>                 )
>
> db.destinataire.email.requires = IS_NOT_IN_DB 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_IN_DB>(db, 
> db.destinataire.email)
> db.destinataire.email.requires = IS_EMAIL 
> <http://127.0.0.1:8000/examples/global/vars/IS_EMAIL>()
> db.destinataire.email.requires = IS_NOT_EMPTY 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
>
> db.mailinglist.nom.requires = IS_NOT_IN_DB 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_IN_DB>(db, 
> db.mailinglist.nom)
> db.mailinglist.nom.requires = IS_NOT_EMPTY 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
> db.mailinglist.description.requires = IS_NOT_EMPTY 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
> db.mailinglist.declencheur.requires = IS_NOT_EMPTY 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_EMPTY>()
>
> #l'abonnement d'un destinataire à une mailinglist doit être unique
> #tiré de http://osdir.com/ml/web2py/2010-07/msg01889.html
> db.abonnement.destinataire_id.requires = IS_IN_DB 
> <http://127.0.0.1:8000/examples/global/vars/IS_IN_DB>(db, 'destinataire.id', 
> '%(email)s',
>     _and=IS_NOT_IN_DB 
> <http://127.0.0.1:8000/examples/global/vars/IS_NOT_IN_DB>(db(db.abonnement.mailinglist_id==request
>  <http://127.0.0.1:8000/examples/global/vars/request>.vars.mailinglist_id), 
> 'abonnement.destinataire_id'))
>
> ########################
>
> As described, a "destinataire" can make multiple subscriptions "abonnement" 
> to "mailinglist", and a mailinglist have multiple subscribers.
>
> I don't understand how to give a user the possibility to make a subscription 
> to multiple mailinglists in one form like :
>
> enter email : _____
>
> select mailinglists : 
>
> ml1 X
>
> ml2 X
>
> ml3 .
>
> where the user select each mailinglist he wants to subscribe with a checkbox.
>
> Thanks for any help
>
>

-- 



Reply via email to