5

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

请问,谁能帮帮我?谢谢

4

3 回答 3

4

OpenERP 登录时归档的功能没有连接。

因此,您可能提供了错误的用户 ID 或密码。

函数字段的主要用途是:

根据其他字段自动计算字段的值。

即总计 = 字段 1 + 字段 2 + 字段 3

示例:'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
于 2012-05-10T04:51:32.530 回答
2

为了解决这个问题,我检查了一些意图,并且我的函数的定义应该在声明之前 fields 。

于 2012-05-10T12:03:45.943 回答
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'),
于 2015-04-06T07:03:30.117 回答