Как выполнить конкретную функцию, если поле изменено в 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 является функциональным полем. В этом случае вам следует перезаписать эту функцию.

Другие вопросы по тегам