[pyar] Campo Primario Web2py

Roberto Perdomo robertop23 en gmail.com
Jue Feb 3 22:30:34 ART 2011


2011/2/3 nicolás rosbaco <antiyanki en gmail.com>

> OK. entonces: unique, evita la inserción de tuplas en las tablas (si la
> clave esta repetida)... y pasa por cuenta del programador evitar que ello
> ocurra (o atrapar la excepción supongo yo)
>
> con IS_NOT_IN_DB las verificaciones se hacen antes de modificar la tabla...
> pero la tabla no es creada con la restricción referida ¿está bien?
>
> Por otro lado: como hago (cuando creo la tabla) si quiero incluir más de un
> requires???
>

Si necesitas mas de uno lo haces asi:

db.define_table('tipo_nomina',
      SQLField('nomina', type='string', length=40, notnull=False,
unique=True, required=True))

db.tipo_nomina.nomina.requires= IS_IN_DB
<http://127.0.0.1:8000/examples/global/vars/IS_IN_DB>(db,
db.tipo_nomina.nomina, error_message='Ha introducido un valor vacío o
registrado')
db.tipo_nomina.nomina.requires = IS_LENGTH
<http://127.0.0.1:8000/examples/global/vars/IS_LENGTH>(maxsize=40,
minsize=5, error_message='Introduzca entre %(min)g y %(max)g
caracteres')

db.tipo_nomina.nomina.requires =
IS_MATCH<http://127.0.0.1:8000/examples/global/vars/IS_MATCH>
('^[a-zA-ZáéíóúÁÉÍÓÚ\s]+$',error_message='Introduzca solo letras')

>
>
> Bueno gente, esto esta re bueno. Muchas gracias
>
>
> El 3 de febrero de 2011 19:49, Mariano Reingart <reingart en gmail.com>escribió:
>
> 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/
>> >
>> _______________________________________________
>> 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)
>
> _______________________________________________
> 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/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110203/8b5b7424/attachment.html>


More information about the pyar mailing list