随笔 - 22,  文章 - 0,  评论 - 39,  阅读 - 20940

在开发货运管理模块的时候,用到了两张表:主表[waybill]和明细表[waybill.detail],主表存放运单主体信息,明细表存放运单货物信息,如下图所示。

上图中红色方框标记的是明细表中行内的运费计算结果;蓝色圆圈标记的是主表中的总运费,是明细表中三条货品数据的运费总和。在odoo中是如何实现将明细表的数据统计结果赋值给主表字段的呢?

首先在主表中定义一个总运费[total_fees]字段和一个一对多的货运明细[detail_ids]字段,其中总运费total_fees的值来自一个计算函数_compute_total_fees,代码如下:

1     total_fees = fields.Float(string='总运费', compute='_compute_total_fees', store=True)
2     detail_ids = fields.One2many('waybill.detail', 'waybill_id', string='货运明细')
3     @api.depends('detail_ids.total_freight')
4     def _compute_total_fees(self):
5         for waybill in self:
6             waybill.total_fees = sum(waybill.detail_ids.mapped('total_freight'))

 

以上代码中total_freight是明细表中每条数据的运费合计,如此就实现了主表字段关联到明细表数据的统计结果。

点击链接查看完整源码:github

点击链接阅读原文:菜园工程师

posted on   HeavenSpring  阅读(128)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示