如何在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中,这种情况是怎么回事呢?
3 个回答
0
你需要在类里面定义这个变量,然后在类里的任何一个函数中都可以通过调用 self.variable_name 来获取这个数据。
0
你需要在类 Lable 中定义那个变量。
就像这样 ----> global family_code_id,同时在类 label 中也要定义,这样它才能正常工作。
0
你可以使用全局变量,但通常有更好的方法。
我首先建议你把 family_code_id
这个字段传递到两个 on_change
事件里。你担心在这两个调用之间它会在客户端发生变化吗?如果不担心,那就给 onchange_blockcreate()
方法加一个 family_code_id
参数,并在你的 XML 文件的 on_change
属性中把 family_code_id
加到字段列表里。
如果你还是想用全局变量,那你可能需要在两个方法里都声明它为全局变量,并在 onchange_evaluation_date()
方法里给它赋值。全局变量通常不是个好主意,类的成员变量通常更好。不过,OpenERP 的模型类是单例的,所以你通常不想保存任何状态。所有的东西都应该通过方法参数传入。