The only problem is see is Field('auth_user_id', unique=True, default = auth.user.id),
should be Field('auth_user_id', unique=True, default =auth.user_id #<<<< requires=IS_NOT_IN_DB(db,'vendedor.auth_user_id')), form can only manipuate errors from form validation, not database errors. Even if you enforce uniqueness in database, you still need to enforce it in forms. On May 24, 6:59 am, puercoespin <jzaragoza.puercoes...@gmail.com> wrote: > In a db.py: > > db.define_table('vendedor', > Field('auth_user_id', unique=True, default = > auth.user.id), > Field('direccion'), > Field('provincia'), > Field('coordenadas_gps'), > Field('email', requires=IS_EMPTY_OR(IS_EMAIL()), > default = auth.user.email), > Field('telefono', 'integer'), > Field('profesional', 'boolean', default=True)) > > In the admin app, raises an error when 'auth_user_id' values is in > database, but not in controller, allowing repeated values in > 'auth_user_id': > > default.py > > def registrovendedor(): > > form = SQLFORM(db.vendedor) > > if form.accepts(request.vars, session): > response.flash = T('Registo válido') > elif form.errors: > response.flash = T('Atención: Errores en los datos del > formulario') > else: > response.flash = T('Por favor, rellene el formulario de > registro') > > return dict(form=form) > > what's wrong? It's necessary to validate in all levels (DAL, Form and > Database)? If you validate at low level (I think in database level), > why you must to validate at form level? > > Thanks