Hi, thanks for your help, I can now have checkboxes in the form, but I can't change the "destinataire" field from "id" to "email" : def sabonner(): abo = db.abonnement abo.mailinglist_id.widget = SQLFORM.widgets.checkboxes.widget form = SQLFORM(abo) return dict(form=form)
Where can I specify wich fields can be exposed in the form? thanks Le lundi 6 août 2012 21:02:44 UTC+2, Cliff Kachinske a écrit : > > 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 >> >> --