我在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中这怎么可能?
答案 0 :(得分:0)
您可能可以使用全局变量,但通常有更好的方法。
我的第一个建议是将family_code_id
字段传递给两个on_change
事件。您是否担心两次通话之间客户端会发生变化?如果没有,只需在family_code_id
方法中添加onchange_blockcreate()
参数,然后将family_code_id
添加到XML文件的on_change
属性中的字段列表中。
如果您决定使用全局变量,则可能需要在两种方法中将其声明为全局变量,并使用onchange_evaluation_date()
方法进行分配。全局变量通常是个坏主意,而类成员变量通常更好。但是OpenERP模型类是单例,所以你通常不希望保持任何状态。一切都应该通过方法参数进入。
答案 1 :(得分:0)
你必须在Lable类中定义该变量
喜欢---->全局family_code_id以及类标签然后它正常工作
答案 2 :(得分:0)
你必须在类中定义变量,你可以通过调用self.variable_name
来检索类中任何函数中的数据。