在开发货运管理模块的时候,用到了两张表:主表[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
点击链接阅读原文:菜园工程师
标签:主表,waybill,fees,detail,明细表,Odoo,total From: https://www.cnblogs.com/heavenspring/p/17804322.html