TypeError: on_change_month_wage() takes at most 6 arguments (7 given)

TypeError: on_change_month_wage() takes at most 6 arguments (7 given)

我正在开发一个适用于委内瑞拉法律的薪资模块,我正在创建一个函数来计算员工的日工资,结果很好,模块进行了计算,但是;当我想保存日志时出现此错误:

TypeError: on_change_month_wage() Takes at most six arguments (7 Given)

这是我的代码:

def on_change_month_wage(self, cr, uid, ids, month_wage, context=None):
    res = {}
    if month_wage > 0:
        res['diary_wage'] = month_wage / 30
    return {'value': res}

_columns = {
    'month_wage':fields.float('Salario Mensual', digits=(16,2)),
    'diary_wage':fields.function(on_change_month_wage, type = 'float', string = 'Salario Diario'),
}

和我的 xml 行:

<field name="month_wage" string="Salario Mensual" on_change="on_change_month_wage(month_wage)" />
<field name="diary_wage" string="Salario Diario" />

我应该怎么做才能解决这个错误?

不建议将 onchange 方法用作函数,因为 on_chnage 采用不同的参数,例如:

function:这个函数是 return float 因为它的定义是 type = 'float'

def cal_month_wage(self,cr,uid,ids,field_name,arg,context=None):
    ...
    ... #here your code logic

return float_value


'diary_wage':fields.function(cal_month_wage, type = 'float', string = 'Salario Diario')

onchange:Onchange return 字典(键:值)

def on_change_month_wage(self, cr, uid, ids, month_wage, context=None):
    ...
    ... #here your code logic

return dictionary 

field name="month_wage" string="Salario Mensual" on_change="on_change_month_wage(month_wage)"

希望你在外观和功能上有所不同。之后你的问题就解决了。