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 <[email protected]>
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