OpenERP 7: Как вызвать функцию автоматического увеличения версии после нажатия кнопки "Сохранить"

Как я могу вызвать функцию после нажатия кнопки "Сохранить" в OpenERP 7?

В моем пользовательском модуле я хочу автоматически увеличить параметр "version_number", при котором каждый раз, когда пользователь нажимает сохранить, он запускает функцию для выполнения логики "ver=ver+1" и обратной записи в поля "version_number". Как я мог это сделать?

Я пытался использовать "def write()", но не уверен, как именно это можно сделать. Ценю вашу помощь. Спасибо!

3 ответа

Решение

Вы должны переопределить write метод.

def write(self, cr, uid, ids, vals, context=None):
    res = super(your_model, self).write(cr, uid, ids, vals, context)
    self._increment_version(cr, uid, ids)
    return res

def _increment_version(self, cr, uid, ids):
    for record in self.browse(cr, uid, ids):
        cr.execute('update table_name set version_number=%s where id=%s' % (record.version_number + 1, record.id))

Вы правы, вы должны использовать функцию записи как.

_columns={...,
      'ver':fields.integer(),
    ...}

def write(self, cr, uid, ids, vals, context=None)
    vals['ver']= trigger_func()
    return self.super(your_class_name).write(cr, uid, vals, context)   

Здесь write метод работы для меня

def write(self, cr, uid, ids, vals, context=None):
    res = super(your_model, self).write(cr, uid, ids, vals, context)
    self._increment_version(cr, uid, ids)
    return res

def _increment_version(self, cr, uid, ids):
    res = {}
    reads = self.read(cr, uid, ids, ['version'], context=context)
    ver_num = reads.get('version')
    ver_id = reads.get('id')
    if ver_num:        
        cr.execute('update table_name set version_number=%s where id=%s' % (ver_num + 1, ver_id))
    return res
Другие вопросы по тегам