[pyar] Campo Primario Web2py

Mariano Reingart reingart en gmail.com
Vie Feb 4 16:05:01 ART 2011


Cuando son varios validadores, van en una lista:

db.nadadores.fecnac.requires = [ IS_DATE(error_message='Formato
erroneo? (AAA-MM-DD)'),

IS_NOT_EMPTY(error_message='Campo Obligatorio'), ]

Sds

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



2011/2/4 nicolás rosbaco <antiyanki en gmail.com>:
> 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(db, db.tipo_nomina.nomina,
>> error_message='Ha introducido un valor vacío o registrado')
>>
>>
>> db.tipo_nomina.nomina.requires = 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('^[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)
>
> _______________________________________________
> 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