OpenERP:简单使用fields.function

时间:2012-05-09 22:22:03

标签: python openerp

我尝试计算对象的字段并将它们存储到新字段中。 我从一个使用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

拜托,有人可以帮帮我吗?感谢

3 个答案:

答案 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'),