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

Reply via email to