В Odoo v8 используется много декораторов API. Но я не понимаю основное различие между @ api.depends и @ api.onchange.В чем основное отличие между @ api.onchange и @ api.depends в Odoo (openerp)?
Может ли кто-нибудь помочь мне в этом?
Thank you.
В Odoo v8 используется много декораторов API. Но я не понимаю основное различие между @ api.depends и @ api.onchange.В чем основное отличие между @ api.onchange и @ api.depends в Odoo (openerp)?
Может ли кто-нибудь помочь мне в этом?
Thank you.
@ api.depends
Этот декоратор специально используется для "fields.function" в odoo. Для «field.function» вы можете вычислить значение и сохранить его в поле, где возможно, что расчет зависит от некоторых других полей одной таблицы или другой таблицы, @ api.depends ', чтобы «смотреть» на поле какой-то таблицы.
Таким образом, это вызовет вызов декорированной функции, если любое из полей декоратора 'изменено ORM или изменено в форме'.
Допустим, есть таблица «A» с полями «х, у & г» и таблица «B» с полями «р», где «р» является field.function в зависимости от поля «х» из таблицы «A», поэтому, если какое-либо изменение сделано в поле «x», оно вызовет украшенную функцию для вычисления поля «p» в таблице «B».
Убедитесь, что таблица «A» и «B» связана каким-либо образом.
@ api.onchange
Этот декоратор вызовет вызов декорированной функции, если какой-либо из полей, указанных в декоратора изменяется в форме. Здесь область ограничена одним и тем же экраном/моделью.
Скажем, у нас есть поля «DOB» и «Age», поэтому мы можем иметь декоратор @ api.onchange для «DOB», где, как только вы измените значение «DOB», вы можете вычислить поле «возраст».
Вы можете разместить сходства в @ api.depends и @ api.onchange, но некоторые отличия заключаются в том, что область действия onchange ограничена одним и тем же экраном/моделью, а @ api.depends также работает с другим связанным экраном/моделью.
Для получения дополнительной информации Here - это ссылка, которая описывает все API Odoo v8.
@ api.onchange Работы по присвоению виртуальных записей на этих записях не записываются в базу данных, а просто используются для определения того, какое значение отправить обратно клиенту.
Поля могут быть вычислены (вместо чтения из базы данных) с использованием параметра вычисления, он должен присвоить вычисленное значение полю, он использует значения других полей из той же модели или модели других (в отличие от @api. onchange, которые работают только с полями в одном представлении), он должен указывать поля, используя api.depends ().
Для получения дополнительной информации. Пожалуйста, просмотрите наш блог: https://odooforbeginnersblog.wordpress.com/2017/03/01/how-to-override-an-api-depends-decorated-method/
Спасибо [email protected] Patadia за ваше объяснение. –
хорошее объяснение с примером. Спасибо, что поделился. –