如何求和一个字段的所有记录的所有值? (Odoo 13)
How to sum all values of all records of a field? (Odoo 13)
假设我有两个浮点字段:
num = fields.Float('Number')
sum_num = fields.Float('Sum all values of the num field')
我创建了第一条记录并在 num 字段中输入值:1.0 ;
数 = 1.0
并希望 sum_num 字段中的结果为 1.0 ;
sum_num = 1.0
然后我创建了第二条记录并在 num 字段中输入值:2.0 ;
数 = 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 不会在您的计算中设置默认值。
其次。您应该迭代每条记录并设置记录总和。
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
假设我有两个浮点字段:
num = fields.Float('Number')
sum_num = fields.Float('Sum all values of the num field')
我创建了第一条记录并在 num 字段中输入值:1.0 ;
数 = 1.0
并希望 sum_num 字段中的结果为 1.0 ;
sum_num = 1.0
然后我创建了第二条记录并在 num 字段中输入值:2.0 ;
数 = 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 不会在您的计算中设置默认值。
其次。您应该迭代每条记录并设置记录总和。
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