微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

假设我有两个浮点字段:

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

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

数量 = 1.0

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

sum_num = 1.0

然后我创建了第二条记录并在 num 字段中输入 value: 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。