Как выполнить конкретную функцию, если поле изменено в Odoo 8?
Я работаю с product.product
объект. Имеет поле с именем qty_available
, что указывает на доступное количество товара на складе, как говорит его название.
Обычно я бы добавил @api.depends('qty_available')
декоратор для метода, который я хочу выполнить. Но я думаю, что этот метод не будет выполнен, пока я не создам вычисляемое поле, которое его вызывает. Проблема в том, что поле qty_available
может быть изменено из множества разных представлений, и было бы очень неудобно изменять каждое из этих представлений для добавления вычисляемого поля.
Есть ли способ сделать это правильно?
1 ответ
Если вам нужно сделать это при записи, а не при создании, вы можете переопределить функцию записи и проверить, записывается ли это поле.
@api.multi
def write(self, values):
if values.get('qty_available'):
#Your function here
return super(ResPartner, self).write(values)
Так как values содержит словарь с полями, которые изменяются, он будет работать только в том случае, если qty_available изменилось. Будьте осторожны, так как это не сработает, если qty_available является функциональным полем. В этом случае вам следует перезаписать эту функцию.