Проблема в том, что @api.onchange()
работает на уровне просмотра, например,
=> Edit a record in form view
=> You change value on a `@api.onchange()` field, `sq_cost` in this case
=> `@api.onchange` function is fired, some other field value is changed `standard_price` in this case
**But nothing is changed on the database yet, cause you are still on edit mode**
=> Changes are stored in database only if you press save button.
Но в случае импорта из CSV ничего не меняется на уровне просмотра, значения изменяются непосредственно в базе данных, поэтому ни одно изэтот процесс выполняется.
Решение:
вместо использования onchange
функциональности на уровне просмотра, вы можете использовать compute function
в вашем поле standard_price
с @api.depends('sq_cost')
.Это работает на уровне базы данных, поэтому значения будут рассчитываться всякий раз, когда вы импортируете значение sq_cost
.Что следует иметь в виду:
** compute field is by default not stored, set `store=True`
** compute field is by default readonly, set `inverse='inverse_function'` to make this field editable