我在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中这怎么可能?在
你必须在类Lable中定义这个变量
像是>;全局系列代码_id以及类内标签,则它可以正常工作
您必须在类中定义变量,并且可以通过调用self.variable_名称在
你也许可以使用全局变量,但通常有更好的方法。在
我的第一个建议是将
family_code_id
字段传递给两个on_change
事件。你是否担心在两次通话之间客户会发生变化?如果不是,只需将family_code_id
参数添加到onchange_blockcreate()
方法中,并将family_code_id
添加到XML文件的on_change
属性的字段列表中。在如果决定使用全局变量,则可能需要在两个方法中声明它是全局变量,并在
onchange_evaluation_date()
方法中赋值。全局变量通常是个坏主意,而类成员变量通常更好。不过,OpenERP模型类是单例的,所以您通常不想保持任何状态。一切都应该通过方法参数来实现。在相关问题 更多 >
编程相关推荐