2011-11-24 78 views
0

我在fct1中有一个变量var_x。 我想在另一个函数fct2在同一类 代码使用相同的变量值:如何在openerp中的同一类的另一个函数中使用一个函数变量?

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也。但它显示一个错误:

global variable family_code_id is not defined.

这是怎么可能在openerp?

+0

retrive在任何类中的函数,数据请修正你的代码的格式。每个缩进使用4个空格。不要混合标签和空格。 – eryksun

回答

0

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

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

如果你决定使用全局变量,你可能需要声明它在这两种方法全球,并在onchange_evaluation_date()方法进行分配。全局变量通常是一个坏主意,而类成员变量通常更好。 OpenERP模型类是单身人士,所以你通常不想保持任何状态。一切都应该通过方法参数进来。

+0

感谢您的帮助don.i有更多的想法 –

0

你必须定义在类拉布勒

像---->全球family_code_id变量以及类标号,则正常工作

0

你必须定义在类中的变量,而您可以通过调用self.variable_name

相关问题