0

我在 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中怎么可能?

4

3 回答 3

0

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

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

如果您确定要使用全局变量,您可能需要在两种方法中都将其声明为全局变量,并在方法中对其进行赋值onchange_evaluation_date()。全局变量通常是一个坏主意,而类成员变量通常更好。然而,OpenERP 模型类是单例的,所以你通常不想持有任何状态。一切都应该通过方法参数进来。

于 2011-11-25T22:42:50.850 回答
0

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

像----> global family_code_id 以及在类标签中然后它可以正常工作

于 2011-12-01T13:18:02.263 回答
0

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

于 2012-03-02T07:34:46.903 回答