Publicidad

jueves, 30 de julio de 2015

Eliminacion en Cascada y Restricciones en campos Many2One

Eliminacion en Cascada y Restricciones en campos Many2One

    Un Error muy comĆŗn durante la programaciĆ³n de clases y en especial al utilizar los campos Many2One y One2Many en Odoo es la definiciĆ³n de los atributos.
Existe uno en especial llamado "ondelete", este atributo tiene 3 funciones:

  1. Cascade. Permite eliminar los registros ligados a una clase, cuando tiene un campo one2many.
  2. Restrict. Impide la eliminaciĆ³n de la fila referenciada. 
  3. Set null. Modifica el campo a Nulo Ć³ False, cuando el registro de la relaciĆ³n sea Eliminado.

Un ejemplo de ondelete:

class ejemplo_clase(osv.osv):
    _name = 'ejemplo.clase'
    _description = 'Descripcion del Modelo'
    _columns = {
        'lineas': fields.one2many('ref_id','ejemplo.linea', 'Linea'),
    }

class ejemplo_linea(osv.osv):
    _name = 'ejemplo.linea'
    _description = 'Descripcion del Modelo'
    _columns = {
        'ref_id': fields.many2one('ejemplo.clase', 'Referencia', ondelete="cascade"),
    }

    Lo que pasara en el ejemplo anterior es que cuando se borre un registro de la tabla ejemplo_clase, se borraran los registros de la tabla ejemplo_linea que tenga asignados.


0 comentarios:

Publicar un comentario