Python 如何在odoo中使用onchange one2many变量传递值?

Python 如何在odoo中使用onchange one2many变量传递值?,python,openerp,odoo-8,odoo-9,odoo-10,Python,Openerp,Odoo 8,Odoo 9,Odoo 10,不需要在视图文件中写入onchange属性。有了新的API,我们可以通过@API.onchange('field\u name')直接实现onchange功能 我们可以在one2many字段中传递上下文,并使用self获取该值。_context.get('context_key_name')) 尝试以下方法: class employee_payroll_earnings(models.Model): _name = 'employee.payroll.earnings'

不需要在视图文件中写入onchange属性。有了新的API,我们可以通过@API.onchange('field\u name')直接实现onchange功能

我们可以在one2many字段中传递上下文,并使用self获取该值。_context.get('context_key_name'))

尝试以下方法:

class employee_payroll_earnings(models.Model):    
    _name = 'employee.payroll.earnings' 

    earnings_id=fields.Integer()
    earnings_type=fields.Many2one('earnings.type','Earnings')
    based_on=fields.Selection([('fixed','fixed'),('percentage','percentage')], 'Based On')
    amount=fields.Float('Amount or Percentage')
    total=fields.Float('Total')

    @api.multi
    def calc_amount(self,based_on,salary_month):
        print based_on
        print salary_month

class hr_employee(models.Model):
    _inherit = 'hr.employee'     
    salary_month = fields.Float('Salary/Month', required=True)
    earning_type_id = fields.One2many('employee.payroll.earnings','earnings_id','Earnings')

@api.onchange('基于')
def onchange_计算金额(自身):
上下文=自身
如果context.has_key('salary_month'):
打印基于
打印上下文。获取('salary\u month')
class employee_payroll_earnings(models.Model):    
    _name = 'employee.payroll.earnings' 

    earnings_id=fields.Integer()
    earnings_type=fields.Many2one('earnings.type','Earnings')
    based_on=fields.Selection([('fixed','fixed'),('percentage','percentage')], 'Based On')
    amount=fields.Float('Amount or Percentage')
    total=fields.Float('Total')

    @api.multi
    def calc_amount(self,based_on,salary_month):
        print based_on
        print salary_month

class hr_employee(models.Model):
    _inherit = 'hr.employee'     
    salary_month = fields.Float('Salary/Month', required=True)
    earning_type_id = fields.One2many('employee.payroll.earnings','earnings_id','Earnings')
<field name="salary_month"/>
<field name="earning_type_id" context="{'salary_month': salary_month}">
    <tree editable="bottom">
        <field name="earnings_type" />
        <field name="based_on"  on_change="calc_amount(based_on)" />
        <field name="amount" />
        <field name="total" />
    </tree>
</field>


@api.onchange('based_on')
def onchange_calc_amount(self):

    context = self._context

    if context.has_key('salary_month'):

        print self.based_on
        print context.get('salary_month')