如何对一个字段的所有记录的所有值求和?(Odoo 13)



假设我有两个浮点字段:

num = fields.Float('Number')
sum_num = fields.Float('Sum all values of the num field')

我创建了第一条记录,并在num字段中输入值:1.0;

num=1.0

并且希望sum_num字段中的结果是1.0;

sum_num=1.0

然后我创建了第二条记录,并在num字段中输入值:2.0;

num=2.0

并且希望sum_ num字段中的结果是3.0;

sum_num=3.0

等等…

我试过使用这样的计算字段:

sum_num = fields.Float(compute='_sum_num', string='Sum all values of all records of the num field')
@api.depends('num')
def _sum_num(self):
for rec in self:
if rec.num:
rec.sum_num += rec.sum

但我用这种方式犯了错误!

那么,如何求和num字段中所有记录的所有值呢?

请帮忙!

谢谢!

我不确定你的代码的实用性,但它可能吗。

首先,在v13中,计算方法必须始终在字段中设置一个值。因为在v13中,Odoo不会在您的计算中设置默认值。

第二。你应该对每条记录进行iter,并设置记录的总和。

num = fields.Float('Number')
sum_num = fields.Float(compute='_sum_num', string='Sum all values of all records of the num field')
@api.depends('num')
def _sum_num(self):
# fetch all records for your model and sum num field value
records_sum = sum(self.env["your.model"].search([]).mapped('num'))
# Iter on each records to set records_sum
for rec in self:
rec.sum_num = records_sum

最新更新