Great! Thanks for your quick answer. I really don't understand completely what does IS_NOT_IN_DB, I just copy/pasted the code and it works perfectly. I'll check the documentation and the API for detailed info.
Thanks again On 20 feb, 17:06, Anthony <abasta...@gmail.com> wrote: > > db.combinada.primero.requires = > > [IS_NOT_IN_DB(db(db.combinada.combinado==str(request.vars.primero) > > +str(request.vars.segundo)), "combinada.combinado"), IS_NOT_EMPTY()] > > The value of request.vars.primero will be passed to the above IS_NOT_IN_DB > validator, but it is then comparing that value against values in the > "combinado" field -- so even when the "combinado" value is duplicated, it > won't return an error because the value of "primero" won't match the > duplicated value of "combinado". Instead, you should compare the value of > request.vars.primero to values in the "primero" field, but only among the > set of records that match the current value of request.vars.segundo -- > that's what the example on Stack Overflow is doing. The idea is that you're > looking for a set of records where "primero" is duplicated among a set of > records where "segundo" is also duplicated, which implies that the > combination of "primero" and "segundo" is duplicated. > > db.combinada.primero.requires = > [IS_NOT_IN_DB(db(db.combinada.segundo==request.vars.segundo), > "combinada.primero", error_message='The combination of primero and > segundo must be unique'), > IS_NOT_EMPTY()] > > Anthony