[pyar] Web2py - unique=True no funciona con campo computado

Alan Etkin spametki en gmail.com
Lun Ago 5 18:48:26 ART 2013


> Necesito asegurar que no se inserten registros duplicados en la DB,
> basandome en 3 campos.
>
> Para lo cual tomé y adapté este ejemplo de la web, pero no anda(me
> permite insertar registros con el campo computado('unico') duplicado):
>
> db.define_table('ejemplo',
>         Fields('legajo','integer'),
>         Fields('quincena','integer'),
>         Fields('mes','integer'),
>         Fields('unico', unique=True, compute=lambda j:
> str(j.legajo)+str(j.quincena)+str(j.mes)))

¿Te fijaste que en la bd el campo tenga realmente el atributo unique?
Creo que en ciertos casos sqlite no actualiza las propiedades de los
campos.

Como alternativa creo que podrías agregar a la función de cálculo
código que verifique que no existe otro registro con ese valor
calculado y que genere una excepción en caso de encontrar duplicados.


More information about the pyar mailing list