繁体   English   中英

如何在openerp的同一类的另一个函数中使用一个函数变量?

[英]How to use one function variable in another function of same class in openerp?

我在fct1中有一个变量var_x。 我想在同一类代码的另一个函数fct2中使用相同的变量值:

def onchange_blockcreate(self, cr, uid, ids, block):
    global family_code_id
    global varname        
    if block:
        cr.execute ('select activefrom,activeto from new_block where id=%s ',(block,))            
        family_code_id =cr.fetchone()[0]               
    msgalert = {'title':'Warning','message':}
    return {'warning':msgalert}
def onchange_evaluation_date(self, cr, uid, ids,family_code_id,activefrom):
    print activefrom
    print family_code_id
    if activefrom>=family_code_id:
        print activefrom          
    else :
        msgalert = {'title':'Warning','message':'fieldtocheck is too short!'}
        return {'warning':msgalert} 

这里的family_code_id用于第一个函数,我也想在第二个函数中使用相同的family_code_id。 但是它显示了一个错误:

未定义全局变量family_code_id。

在openerp中怎么可能?

您可能可以使用全局变量,但是通常有更好的方法。

我的第一个建议是将family_code_id字段传递到两个on_change事件中。 您是否担心两个呼叫之间的客户端会发生变化? 如果不是,只需将一个family_code_id参数添加到onchange_blockcreate()方法,然后将family_code_id添加到XML文件的on_change属性中的字段列表。

如果确定要使用全局变量,则可能需要在两个方法中都将其声明为全局变量,然后在onchange_evaluation_date()方法中进行分配。 全局变量通常不是一个好主意,而类成员变量通常更好。 不过,OpenERP模型类是单例的,因此您通常不想保留任何状态。 一切都应通过方法参数输入。

您必须在Lable类中定义该变量

像---->全局family_code_id以及类标签中一样,它可以正常工作

您必须在类内定义变量,然后可以通过调用self.variable_name在类内的任何函数中检索该数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM