Ответ 1
@api.depends
Этот декоратор специально используется для "fields.function" в оду. Для "field.function" вы можете вычислить значение и сохранить его в поле, где возможно, что расчет зависит от некоторых других полей одной таблицы или другой таблицы, @api.depends ', чтобы "смотреть" на поле какой-то таблицы.
Таким образом, это вызовет вызов декорированной функции, если любое из полей декоратора 'изменено ORM или изменено в форме.
Скажем, есть таблица "A" с полями "x, y и z" и таблицей "B" с полями "p" , где "p" - это полевая функция, зависящая от поля 'x 'из таблицы "A" , поэтому, если какое-либо изменение сделано в поле "x", оно вызовет украшенную функцию для вычисления поля "p" в таблице "B" .
Убедитесь, что таблицы "A" и "B" связаны определенным образом.
@api.onchange
Этот декоратор вызовет вызов декорированной функции, если какое-либо из полей, указанных в декораторе, будет изменено в форме. Здесь область ограничена одним и тем же экраном/моделью.
Скажем, на форме у нас есть поля "DOB" и "Age", поэтому мы можем иметь декоратор @api.onchange для "DOB" , где, как только вы измените значение "DOB" , вы можете вычислить "возраст".
Вы можете указать сходства в @api.depends и @api.onchange, но некоторые отличия заключаются в том, что объем onchange ограничен одним и тем же экраном/моделью, а @api.depends также работает с другим связанным экраном/моделью.
Для получения дополнительной информации Здесь - ссылка, описывающая все API Odoo v8.