Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Openerp中的Onchange函数_Python_Xml_Onchange_Openerp - Fatal编程技术网

Python Openerp中的Onchange函数

Python Openerp中的Onchange函数,python,xml,onchange,openerp,Python,Xml,Onchange,Openerp,我在account.invoice.line中有一个名为form_type的选择字段。它有三个选择选项: 1) form_a 2) form_b 3) form_c account.invoice.line中还有一个名为flag的整数字段。选择form_c时,标志值应设置为1;否则,如果选择了表格a或表格b,则标志值应设置为0。我为上述情况编写了一个onchange函数,但它不起作用。有人能帮我吗?我的代码有什么问题 def onchange_form_type(self, cr, uid,

我在account.invoice.line中有一个名为form_type的选择字段。它有三个选择选项:

1) form_a
2) form_b
3) form_c
account.invoice.line中还有一个名为flag的整数字段。选择form_c时,标志值应设置为1;否则,如果选择了表格a或表格b,则标志值应设置为0。我为上述情况编写了一个onchange函数,但它不起作用。有人能帮我吗?我的代码有什么问题

def onchange_form_type(self, cr, uid, ids, invoice, context=None):
    val={}
    flag=0
    invoice = self.pool.get('account.invoice.line').browse(cr, uid, invoice)
    for invoice in self.browse(cr, uid, ids, context=context):
        if invoice.form_type=="form_c":
            flag="1"
        else:
            flag="0"

    print flag
    val = { 'flag': flag, }
    return {'value': val}
onchange的account.invoice.line中的我的XML代码是:

<field name="form_type" on_change="onchange_form_type(form_type)"/>

在on change函数中,您不需要调用对象的browse函数,因为这些值尚未存储在数据库中。此外,您将“form_type”值传递给函数,而不是对象id(因为browse接受对象id)

因此,以下是针对预期需求的on_change功能:

def onchange_form_type(self, cr, uid, ids, form_type, context=None):

    val={}
    flag=0
    if form_type == 'form_c':
        flag="1"
    val = { 'flag': flag }
 return {'value': val}