Odoo - Расчет поля Импорт - PullRequest
       28

Odoo - Расчет поля Импорт

0 голосов
/ 27 февраля 2019

Я использую Odoo 10 и у меня есть настраиваемое поле с именем sq_cost.Когда я набираю sq_cost, он обновляет standard_price.Это прекрасно работает со следующим кодом

@api.onchange('sq_cost')
def _onchange_sq_cost(self):

self.standard_price = (self.sqyards_per_box) * (self.sq_cost)

Моя проблема заключается в том, что я должен импортировать CSV, и одно из полей для импорта - sq_cost.Расчет не выполняется, когда я импортирую в sq_cost.Если я наберу это работает нормально.

1 Ответ

0 голосов
/ 28 февраля 2019

Проблема в том, что @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
...