2015-07-13 9 views
0

Привет всем Я развиваю модуль под Odoo 8. У меня есть класс hrEmployee с «_inherit = hr.employee», теперь у моего hrEmployee есть поле One2many, имеющее отношение с другой моделью «hr.employee.visa». Я хочу получить значения полей «hrEmployee» с функцией onchange, определенной в поле «hr.employee.visa». Например, когда я изменяю значение поля «hrEmployee», я могу получить значение поля, введенное в текущей форме (hrEmployee). Как я могу добиться этого в Odoo v8? Мой код Python показано ниже:Получить значение поля унаследованной модели Odoo 8

class hrEmployee(models.Model): 

    _inherit = "hr.employee"    
    diwan_no = fields.Char('Diwan No', size=30, help='Diwan Number') 
    zeo_number = fields.Char('ZEO Number',size=30, help='ZEO Number')  
    visas_ids = fields.One2many('hr.employee.visas', 'employee_id', 'Visas')      

class hr_employee_visas(models.Model):  

    _name='hr.employee.visas' 
    employee_id = fields.Many2one("hr.employee.visas", "Employee") 

    @api.onchange('visas_number')  
    @api.depends('visas_number')  
    def _visa_num(self):  
     cr=self._cr  
     uid=self._uid  
     ids=self._ids 
     for id in ids: 
      obj1=self.pool.get('hr.employee').browse(cr,uid,id,context=None) 
      print obj1.name_related   

    visas_sponsor = fields.Char('Sponsor')  
    visas_states = fields.Selection([('apply','Apply'),('active','Active'),('expire','Expire'),('cancel','Cancelled')], string='State')  
    visas_number = fields.Char('Visa No', help='Visa Number') 

Я пытался использовать self.pool.get просматривание, но это дает мне «False». Plz направлять меня или указывать на мою ошибку. Надежды на предложение

+1

Непонятно, чего вы хотите достичь. «Onchange» - это действие на стороне клиента, инициируемое при редактировании поля 'visas_number' в форме для' hr.employee.visas'. Что вы ожидаете сделать, когда это произойдет? –

+0

Посмотрите, что основной формой является hrEmployee (который наследует «hr.employee»). Существует унаследованное поле 'name_related'. Здесь используется поле One2many, которое связано с «hr.employee.visas». Теперь функция onchange, определенная в дочерней форме (model = 'hr.employee.visas'), должна напечатать мне значение, которое я ввел в родительскую форму (model = 'hrEmployee') –

+0

В вашем коде нет 'name_related'. Вы хотите, чтобы имя сотрудника отображалось в форме визы? Это должно быть по умолчанию. Извините, я все еще смущен. –

ответ

0

Try ниже,

class hr_employee_visas(models.Model):  

    _name='hr.employee.visas' 
    employee_id = fields.Many2one("hr.employee", "Employee") 

    @api.onchange('visas_number')  
    @api.depends('visas_number')  
    def _visa_num(self):  
     for obj in self: 
      print obj.employee_id.name 

Вот ошибка

employee_id = fields.Many2one ("hr.employee.visas", "Сотрудник")

You необходимо установить здесь hr.employee.

Не нужно писать оба декоратора вместе, в случае каких-либо изменений в поле visas_number этот метод будет вызываться, для этого вы можете использовать любой из одного декоратора.

+0

Я пробовал, но он говорит: «hr.employee.visas» не имеет атрибута «name_related» –

+0

имя_соединенное поле не существует, так что сделайте это с полем имени. см. ответ, который я заменил это поле. –

+0

У меня была такая же проблема –

Смежные вопросы