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