我想使用先前的值(=具有先前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
我该怎么做?谢谢
答案 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()