ATRIBUTOS DEL ELEMENTO DE FORMULARIO <FIELD>
attrs (condiciones de solo lectura, invisible, y requerido).
Cuando definimos un atributo 'attr' a un campo <field>, estamos definiendo una condición.
Supongamos que tenemos definido en nuestro archivo de Phyton una clase con los siguientes campos:
'historial': fields.boolean('Historial', help="Marque casilla si historial"),
'historial_desc': fields.char('Description', size=64),
Y en la vista, esta es la definición de los campos:
<field name="historial"/>
<field name="historial_desc" attrs="{'invisible': [('historial, '=', False)]}"/>
El campo 'historial_desc' será invisible si el campo 'historial' (booleano) es igual a 'False'.
on_change (trigger que ejecuta una función cuando el valor del campo cambia).
Ejemplo:
<field name="historial"/>
<field name="historial_des" on_change="onchange_historial_des(historial_desc)" attrs="{'invisible': [('historial', '=', False)]}"/>
Cuando el valor del campo 'onchange_historial_desc'. 'historial_desc' cambie, ejecutaremos la función :
def onchange_historial_desc(self, cr, uid, ids, historial_desc, context={}):
res = {}
for xxxx in self.browse(cr, uid, ids):
res = {
'historial_desc': (xxxx.historial_desc or '') + _('\n') + (historial_desc or ''),
}
return {'value': res}
En esta primera opción, no estoy haciendo caso al parámetro 'historial_des', ya que en este campo no viene un ID, sino un texto. Por lo tanto, hago referencia al parámetro de entrada 'ids'.
Opción 2 de la función:
def onchange_historial_des(self, cr, uid, ids, historial_id, context={}):
res = {}
if historial_id:
xx_obj = self.pool.get('xxxx')
xx = xxxx_obj.browse(cr, uid, historial_id)
res = {
'historial_des': (xxxx.historial_desc or '') + _('\n') + (historial_des or ''),
}
return {'value': res
Este comentario ha sido eliminado por el autor.
ResponderBorrar