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

2024-10-04 11:24:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在fct1中有一个变量var。 我想在同一个类中的另一个函数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} 

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

global variable family_code_id is not defined.

在openerp中这怎么可能?在


Tags: 函数selfididsuiddefcodeblock
3条回答

你必须在类Lable中定义这个变量

像是>;全局系列代码_id以及类内标签,则它可以正常工作

您必须在类中定义变量,并且可以通过调用self.variable_名称在

你也许可以使用全局变量,但通常有更好的方法。在

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

如果决定使用全局变量,则可能需要在两个方法中声明它是全局变量,并在onchange_evaluation_date()方法中赋值。全局变量通常是个坏主意,而类成员变量通常更好。不过,OpenERP模型类是单例的,所以您通常不想保持任何状态。一切都应该通过方法参数来实现。在

相关问题 更多 >