[pyar] Campo Primario Web2py

Mariano Reingart reingart en gmail.com
Jue Feb 3 19:49:36 ART 2011


Las restricciones primarykey, unique y notnull  se aplican a nivel de
datos, web2py no las verifica, simplemente crea las tablas con esas
condiciones, y el servidor de base de datos debería hacer el resto
(por lo que los conectores lanzan excepciones).

Los validadores (IS_NOT_IN_DB, IS_IN_DB, IS_NOT_EMPTY) funcionan a
nivel de los controladores/vistas, son verificados antes de modificar
la base de datos, cuando el usuario utiliza un formulario (y muestran
un mensaje de error en la pantalla, con la posibilidad de corregir el
formulario).

En el libro está explicado en detalle:

http://www.latinuxpress.com/books/drafts/web2py/caps/cap6.html#representacion-de-registros

En este caso, con IS_NOT_IN_DB no aceptaría el formulario mostrando un
error al usuario si esta duplicado algún valor.

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com

2011/2/3 nicolás rosbaco <antiyanki en gmail.com>:
> me faltó decir que estoy trabajando con web2py
>
> El 3 de febrero de 2011 19:30, nicolás rosbaco <antiyanki en gmail.com>
> escribió:
>>
>> Hola, mira no tengo la solución... pero si me paso algo parecido y de
>> pronto por acá puedo llegar a saber que pasa.
>>
>> En mi caso el unique tampoco anduvo (¿ignoro por que??) pero utilicé lo
>> siguiente:
>>
>> db.nadadores.email.requires = IS_NOT_IN_DB(db, 'nadadores.email',
>> error_message='Dirección de mail duplicada. Ya existe un usuario registrado
>> con esta dirección de mail')
>>
>> La verdad que me gustaría saber para que sirve el unique, ya que suponía
>> lo mismo que vos
>>
>>
>> 2011/2/3 Roberto Perdomo <robertop23 en gmail.com>
>>>
>>> Buenas tardes,
>>>
>>> Alguien de casualidad tiene conocimiento en cuanto a como definir un
>>> campo primario adicional en una tabla.
>>>
>>> Tengo por ejemplo una tabla:
>>>
>>> db.define_table('tipo_nomina',
>>>       SQLField('nomina', type='string', length=40, notnull=True,
>>> required=True, unique=True)
>>>       )
>>>
>>> Donde unique=True supuestamente debería funcionar y hacer que no se
>>> permitan valores repetidos para el campo nomina, pero, al añadir un valor
>>> repetido resulta el siguiente error:
>>>
>>>
>>> IntegrityError: duplicate key value violates unique constraint
>>> "tipo_nomina_nomina_key"
>>>
>>> Investigue un poco y dicen que es un error de la Base de Datos, en mi
>>> caso es Postgres. Entonces Web2py no es capaz de manejar o mejor dicho,
>>> generar un error para cuando se esta insertando un valor repetido en un
>>> campo?
>>>
>>> Intente con primarykey = ['nomina'], pero fue infructuoso.
>>>
>>> lo que quisiera seria realmente poder definir un campo primario para
>>> evitar valores repetidos, pero no encuentro la manera adecuada para ello.
>>>
>>> PD: los formularios son generado utilizando SQLFORM y CRUD
>>>
>>> Gracias de antemano
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>>
>>
>> --
>> "En un país colonial las oligarquías son las dueñas de los diccionarios"
>> (John William Cooke)
>
>
>
> --
> "En un país colonial las oligarquías son las dueñas de los diccionarios"
> (John William Cooke)
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



More information about the pyar mailing list