2015-07-13 106 views
0

大家好,我一直在开发Odoo 8模块。我有一个类“hrEmployee”和“_inherit = hr.employee”,现在在我的hrEmployee中有一个One2many字段有关系与另一个模型“hr.employee.visa”。我想通过在“hr.employee.visa”字段中定义的onchange函数来获取“hrEmployee”的字段值。就像当我更改“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浏览但它给了我“假”。普茨指导我或指出我的错误。憧憬建议

+1

目前尚不清楚你想实现什么。 'onchange'是客户端动作,当编辑'hr.employee.visas'的表单中的'visas_number'字段时触发。发生这种情况时你期望做什么? –

+0

看看主窗体是hrEmployee(继承'hr.employee')。有一个继承的字段'name_related'。这里使用了一个与'hr.employee.visas'相关的One2many字段。现在,在子表单上定义的onchange函数(model ='hr.employee.visas')应该打印出我在父表单上输入的值(model ='hrEmployee') –

+0

代码中没有'name_related'。你希望员工姓名在签证表上显示?它应该是默认的。对不起,我还是很困惑。 –

回答

0

尝试以下,

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”, “员工”)

你需要在这里设置hr.employee

无需将两个装饰器一起写入,如果visas_number字段发生任何更改,此方法将被调用,您可以使用任何单个装饰器。

+0

我试过了,但它说'hr.employee.visas'没有属性'name_related' –

+0

name_related字段不存在,所以与名称字段不同。请参阅我已替换该字段的答案。 –

+0

我做了,但同样的问题 –