[pyar] Campo Primario Web2py

nicolás rosbaco antiyanki en gmail.com
Vie Feb 4 11:36:57 ART 2011


Hola, lo probé y me pasa esto:

2011/2/3 Roberto Perdomo <robertop23 en gmail.com>

> 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')
>
>
Yo tengo las siguientes condiciones:
db.nadadores.fecnac.requires = IS_DATE(error_message='Formato erroneo?
(AAA-MM-DD)')
db.nadadores.fecnac.requires = IS_NOT_EMPTY(error_message='Campo
Obligatorio')

si ingreso en el campo fecha cualquier verdura la tupla se agrega (después
claro da error al intentar listar la tabla) a la tabla!

Si dejo vacío el campo chilla el validador! por lo tanto: el último requires
esta siendo considerado....

Ahora (acá lo curioso) si borro el último requires y luego ingreso cualquier
verdura en el campo fecha chilla!...

Me da a pensar que un requires anula el anterior.... ¿puede ser?


> 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/
>>
>
>
> _______________________________________________
> 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)
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110204/33957ebf/attachment.html>


More information about the pyar mailing list