Перейти к содержимому
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
1 Ответить
4296 Представления

I want in res.partner model make onchange event on field parent_id. this field already have onchange event by old api, so i changed it`s value on XML to on_change=1 and added .py code

 

@api.onchange('parent_id')
def onchange_parent_id(self, parent_id=None):
     old_res = super(res_partner, self).onchange_parent_id(self.parent_id.id)old_res = super(res_partner, self).onchange_parent_id(self.parent_id.id)
     if type(old_res) is dict and old_res.has_key('value'):
         for field, value in old_res.get('value').items():
             if hasattr(self, field):
                 setattr(self, field, value)setattr(self, field, value)
     if self.parent_id:
         self.category_id = self.parent_id.category_id
     return old_res
after update, then i open contact form and changing parent_id, everything works as i want, but when i press save error occurrs


File "/opt/odoo-vaimada/openerp/addons/base/res/res_partner.py", line 477, in _fields_sync    
context=context).get('value', {})
TypeError: onchange_parent_id() takes at most 2 arguments (6 given)


as i understand it occurrs becouse on create other method (_fields_sync) also calls this onchange_parent_id methot by 'old style'. Maybe someone can advice me how to fix this.

Thanks in advance

 

Аватар
Отменить
Автор Лучший ответ

work arround for me was change beginning of function:


@api.model    
@api.onchange('parent_id')
def onchange_parent_id_new(self, parent_id=None):
.....
Аватар
Отменить
Related Posts Ответы Просмотры Активность
1
февр. 16
4062
1
дек. 15
6011
1
авг. 25
450
2
июл. 25
2877
3
июл. 25
669