You can use the "onvalidation" argument: http://web2py.com/books/default/chapter/29/07/forms-and-validators#onvalidation
On Thu, Oct 10, 2013 at 10:51 AM, Johann Spies <[email protected]> wrote: > When using this form, how can I build a validator (or use some other way) > that ensure that the form will not be accepted if the combination of > survey_id and question_number is not already in the table? > > form = SQLFORM.factory( > Field('survey_id', db.survey, default = survey_id), > Field('question_number'), > Field('answer_type', 'integer', > requires=IS_IN_SET([(1,'Text'), > (2, 'Only one option > selected'), > (3, 'More than one > option selected')]))) > > I have seen the following answer by Anthony on Stackoverflow, but it breaks > in this case: > > db.questions.question_number.requires = IS_NOT_IN_DB( > db(db.questions.question_number ==request.vars.question_number), > 'survey_id') > > The error: > > File "/home/js/web2py/gluon/validators.py", line 653, in __call__ > > (tablename, fieldname) = str(self.field).split('.') > > ValueError: need more than 1 value to unpack > > Regards > Johann > > > -- > Because experiencing your loyal love is better than life itself, > my lips will praise you. (Psalm 63:3) > > -- > 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 [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. -- 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

