在odoo中的Onchange Functon:TypeError:on_change_bill_id()至少需要7个参数(给定6个)

时间:2015-07-09 12:17:11

标签: odoo

请问我正在尝试使用onchange功能。 这是python:

def on_change_bill_id(self, cr, uid, ids, partner_id, account_id, invoice_mode, context=None):
    print ('------------------------Facturation on change--------------------')
var = self.browse(cr, uid, ids, context)
print ('account = ' ) 
print  account_id
print ('partner =' ) 
print  partner_id
    res = {'value':{
                    'invoice_line': self.get_inputs2(cr, uid, ids, partner_id, account_id, invoice_mode, context=context),
                   }
          }
    print ('-------------------Onchange-----------------------')
    return res

我的xml:

 <field name="date_end" on_change="on_change_bill_id(partner_id, account_id, invoice_mode)"/>

问题在于我只使用:

<field name="date_end" on_change="on_change_bill_id(partner_id, account_id)"/> 

一切正常,当我添加invoice_mode时,我得到了: TypeError:on_change_bill_id()至少需要7个参数(给定6个) 请帮我理解。 非常感谢提前

2 个答案:

答案 0 :(得分:0)

参数问题。我们需要根据.xml侧传递传递值/变量。如果我们传递两个变量而不是.py那么我们必须只有两个变量。

例如,如果我们使用此

<field name="date_end" on_change="on_change_bill_id(partner_id, account_id, invoice_mode)"/>

比.py方必须捕获3变量。

def on_change_bill_id(self, cr, uid, ids, partner_id, account_id, invoice_mode, context=None):
     #here is your code logic

如果更改xml端并传递两个变量,则必须在.py端捕获相同的内容。

例如

<field name="date_end" on_change="on_change_bill_id(partner_id, account_id)"/> 

比.py方法看起来像

def on_change_bill_id(self, cr, uid, ids, partner_id, account_id, context=None):
     #here is your code logic

答案 1 :(得分:0)

您应该尝试更新此行

<field name="date_end" on_change="on_change_bill_id(partner_id, account_id, invoice_mode, context)"/>