Hey mate, I got around that specific validator, however the is_in_set validator causes the problem. (It’s needed to create the select field in HTML)
I managed to get around it with onvalidation, doing the validation based on a state of the control but this is adding more logic on the backend and takes away from the model functionality. Regards, James On Fri, 4 Dec 2020 at 10:57 pm, Leonel Câmara <leonelcam...@gmail.com> wrote: > You can change the field requires in the controller depending on whether > the field should be shown doing something like this > > def index(): > db.purchase.coupon_code.show_if = (db.purchase.have_coupon==True) > if request.vars.have_coupon: > db.purchase.coupon_code.requires = IS_NOT_EMPTY() > else: > db.purchase.coupon_code.requires = IS_EMPTY() > form = SQLFORM(db.purchase).process() > return dict(form = form) > > db.purchase.coupon_code.show_if = (db.purchase.have_coupon==True) > > > > A quinta-feira, 3 de dezembro de 2020 à(s) 07:05:55 UTC, > james.o...@gmail.com escreveu: > >> All, >> >> I am trying to get a solution to the above problem, I am using a >> onvalidation function. If have_coupon is checked then I call IS_NOT_EMPTY >> and set the form.errors.coupon_code manually. This is not ideal but it >> works. >> >> However I cannot seem to get a work around for a dropdown input i.e. >> IS_IN_SET as this is needed on the model to create the correct input but >> inturn fails the processing of the form as onvalidation doesnot get called. >> >> Any help would be great. >> >> Regards, >> James >> >> >> On Wednesday, December 2, 2020 at 12:35:15 PM UTC+10 James O' Driscoll >> wrote: >> >>> Hello all, >>> >>> I have a question regarding conditional fields and using validators. >>> >>> Take the example from the book with a slight change: >>> >>> db.define_table('purchase', Field('have_coupon', 'boolean'), >>> Field('coupon_code', requires=IS_NOT_EMPTY())) >>> >>> with controller: >>> >>> def index(): >>> db.purchase.coupon_code.show_if = (db.purchase.have_coupon==True) >>> form = SQLFORM(db.purchase).process() >>> return dict(form = form) >>> >>> show_if works well but if i need validators in place for when say >>> have_coupon is true, to validate coupon_code I get an error when >>> have_coupon is false as coupon_code is empty. >>> >>> I would prefer to keep the validator on the model, is there a way to >>> accomplish this. >>> >>> Regards, >>> James >>> >>> -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to a topic in the > Google Groups "web2py-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/web2py/fiHjfVb01Z8/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > web2py+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/web2py/2ddf8a1a-2ebe-4ef9-a0e9-6fd5f6c2c26an%40googlegroups.com > <https://groups.google.com/d/msgid/web2py/2ddf8a1a-2ebe-4ef9-a0e9-6fd5f6c2c26an%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/CAHzEzF1VJP%2BMSb92pKVPyAaNC7bMYwATXoV%3DBRUnuFSuxTCEGg%40mail.gmail.com.