sesion iniciar gratis community caracteristicas openerp odoo openerp-8

openerp - iniciar - odoo login



¿Cuál es la diferencia principal entre @ api.onchange y @ api.depends en Odoo(openerp)? (2)

En Odoo v8 hay muchos decoradores API utilizados. Pero no entiendo la principal diferencia entre @ api.depends y @ api.onchange .

¿Alguien puede ayudarme con esto?

Gracias.


@ api.depends

Este decorador se utiliza específicamente para "fields.function" en odoo. Para un "field.function", puede calcular el valor y almacenarlo en un campo, donde es posible que el cálculo dependa de otros campos de la misma tabla o de alguna otra tabla, en ese caso, puede usar '' @ api.depends ''para mantener un'' reloj ''en un campo de alguna mesa.

Por lo tanto, esto activará la llamada a la función decorada si alguno de los campos en el decorador está ''alterado por ORM o cambiado en el formulario'' .

Digamos que hay una tabla ''A'' con los campos "x, y & z" y la tabla ''B'' con los campos "p", donde ''p'' es una función de campo que depende del campo ''x'' de la tabla ''A'' , entonces, si cualquiera de los cambios se realiza en el campo ''x'', activará la función decorada para calcular el campo ''p'' en la tabla ''B''.

Asegúrese de que las tablas "A" y "B" estén relacionadas de alguna manera.

@ api.onchange

Este decorador activará la llamada a la función decorada si alguno de los campos especificados en el decorador se modifica en el formulario. Aquí el alcance está limitado a la misma pantalla / modelo.

Digamos que en el formulario tenemos los campos "DOB" y "Age", por lo que podemos tener un decorador de @ api.onchange para "DOB", donde tan pronto como cambie el valor de "DOB", puede calcular el campo "age" .

Puede colocar similitudes en @ api.depends y @ api.onchange, pero algunas diferencias son que el alcance de onchange se limita a la misma pantalla / modelo, mientras que @ api.depends también funciona en otras pantallas / modelos relacionados.

Para obtener más información, Here está el enlace que describe todas las API de Odoo v8.


@ api.onchange trabaja en la asignación de registros virtuales en estos registros que no se escribe en la base de datos, solo se usa para saber qué valor enviar al cliente.

Los campos pueden computarse (en lugar de leerse desde la base de datos) usando el parámetro compute, debe asignar el valor computado al campo, usa los valores de otros campos del mismo modelo u otro modelo (a diferencia de @ api.onchange, que solo funciona con los campos en la misma vista), debe especificar los campos utilizando api.depends ( ).

Para más información. Por favor, visite nuestro blog: https://odooforbeginnersblog.wordpress.com/2017/03/01/how-to-override-an-api-depends-decorated-method/