我尝试计算对象的字段并将它们存储到新字段中。 我从一个使用fileds.function的简单示例开始,但是当我尝试登录到openerp时,系统会引发用户或密码不正确的错误。
在我班上我添加了字段:
'a' : fields.integer('A'),
'b' : fields.integer('B'),
'total' : fields.function(fnct, method=True, string='Tot',type='integer'),
函数的定义:
def fnct(self, cr, uid, ids, fields, arg, context):
x = {}
for record in self.browse(cr, uid, ids):
x[record.id] = record.a + record.b
return x
拜托,有人可以帮帮我吗?感谢
答案 0 :(得分:4)
没有与OpenERP登录功能的连接。
因此,您可能提供了错误的用户ID或密码。
功能字段的主要用途是:
根据其他字段自动计算字段的值。
,即Total = field1 + field2 + field3
实施例: 'total':fields.function(get_total,method = True,string ='Total',type ='integer'),
如何定义功能:
def get_total(self, cr, uid, ids, fields, arg, context):
x={}
for record in self.browse(cr, uid, ids):
x[record.id]= record.field1 + record.field2 + record.field3
return x
答案 1 :(得分:2)
为了解决这个问题,我检查了一些意图,并且我的函数的定义应该在声明字段之前。
答案 2 :(得分:0)
def fnct(self, cr, uid, ids, fields, arg, context):
x = {}
for record in self.browse(cr, uid, ids):
x[record.id] = record.a - record.b
if x[record.id]<0:
raise osv.except_osv(("Warning"),("You Cant Subtract %s ")%(record.a - record.b))
else:
return x
"a":fields.integer('A'),
"b":fields.integer('B'),
"total":fields.function(fnct, method=True, string='Total',type='integer'),