Acelerando el proceso de creacion de registros
Este es un truco que sirve para las importaciones, y que acelera bastante el tiempo de inserción de registros. El parametro vals de la función create del ORM, puede recibir tanto un diccionario como una lista de diccionarios:
vals = {
'name': 'Carlos',
'login': 'carlos@x.com'
}
user = self.env['res.users'].create(vals)
El código lo que hace es crear un solo usuario. Si lo repetimos 100 veces, creará 100 usuarios de a uno a la vez (con los costos relacionados a nivel ORM y base de datos). Ahora, supongamos que queremos crear dos usuarios en una sola pasada; en ese caso podemos pasarle a la
user_list = [
{'name': 'Carlos','login': 'carlos@x.com'},
{'name': 'Jose','login': 'jose@x.com'},
]
users = self.env['res.users'].create(user_list)
Esto creará dos usuarios (o la cantidad de usuarios incluidos en la lista) en una sola pasada. Con los consiguientes ahorros en el overhead del ORM y base de datos. Lo probé con una migración de usuarios en la que tenía que importar miles de usuarios, y el tiempo de importación se redujo en dos tercios. Lo mismo cuando utilice el mismo truco importando padrones de ARBA.
Acerca de:
Gustavo Orrillo
Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.