Reglas con Campos Many2Many y One2Many
Durante la creación de Reglas para Grupos en OpenERP en ocasiones tenemos que utilizar campos many2many ó one2many para comparar que un valor se encuentre dentro de una lista de valores.
Por ejemplo cuando trabajamos en un entorno MulticompaƱia en OpenERP en ocasiones tenemos errores durante el manejo de Modelos que tengan Acceso a campos que utilicen la campos con referencia a compaƱĆa, por ejemplo si queremos la comprobación de que un elemento se encuentra dentro de una lista ó que un campo compaƱia se encuentre dentro del campo company_ids que se encuentra en Usuarios y que contiene una lista de compaƱias a las cuales el usuario puede tener acceso, tendrĆamos que agregar en la creación de regla el dominio siguiente:
[('company_id','in',[x.id for x in user.company_ids])]
- company_id: Es el campo que encuentra en el modelo OpenERP al cual quiero ligar con mi regla.
- in: Es el la palabra reservada para comparar que un elemento se encuentra dentro de una lista.
- [x.id for x in user.company_ids]: En esta linea utilizamos un poco de código Python para crear una lista con los valores para la comparación de mi dominio, x.id es el valor obtenido de un ciclo for utilizando una variable x para la iterar dentro de el campo user.company_ids que contiene la relación many2many con el modelo de compaƱia. Al Final nos quedarĆa en ejecución algo como lo siguiente [('10','in',[1,5,15,10,25,35,2])], esto da como resultado True o False depensiendo si el valor 10 se encuentra dentro de los valores 1, 5, 15, 10, 25, 35, 2. A este proceso se le conoce en Python como Listas de Comprensión










