OpenERP:功能字段

时间:2012-07-03 10:30:57

标签: python openerp

我想使用先前的值(=具有先前id的记录的值)来计算函数字段的值

'testrest' : fields.function(get_reste, method=True, string='Restant',type='integer'),

 def get_reste(self, cr, uid, ids, field_name, arg, context):
    x = {}
    for record in self.browse(cr, uid, ids ,context):
            if record.statut !=  'entree': 
                x[record.id]= a + record.entree_nbr # a should be the same field for the previous record

我该怎么做?谢谢

2 个答案:

答案 0 :(得分:1)

关于OE 6.1+fields.function()的第一点:它不再需要method参数[服务器版本3495 revid odo@openerp.com-20110701232328-flgxulxva70vnyxr和addons rev 4844]那么请不要再使用“方法”参数了!

现在您要根据之前的值计算值,这样您可以在此处使用store=True param,它会将您之前的值存储在您的记录计算中的数据中,您可以读取之前的值并计算新值并将其返回。

'testrest' : fields.function(get_reste, store=True, string='Restant',type='integer'),

 def get_reste(self, cr, uid, ids, field_name, arg, context):
    x = {}
    for record in self.browse(cr, uid, ids ,context):
            if record.statut !=  'entree': 
                x[record.id]= record.testrest + record.entree_nbr
    return x

这里的字符串的好处是你可以在任何外面的OE或某些外部报告工具中使用这个值,你甚至可以使用这个字段。

希望这会有所帮助。

更多代码:

'price': fields.function(_price_get, method=True, string="Price", store=True),

答案 1 :(得分:1)

def get_reste(self, cr, uid, ids, field_name, arg, context):
    x = {}
    a = 0.0
    for record in self.browse(cr, uid, ids ,context):
            if record.statut !=  'entree': 
                x[record.id]= a + record.entree_nbr 
                a =record.testrest
    return x

如果需要,可以按ids.sort()

对ID列表进行排序
相关问题