首页 > 解决方案 > 添加或删除行时更新所有 One2many 行中的字段

问题描述

我想计算一个可以有多个项目的盒子中的项目的运输成本。盒子有固定的运费,每件商品的成本是通过运费除以商品数量来计算的。

在 UI 中,我希望在添加或从运输中删除项目(添加或删除行)时更新每行显示的成本。

我希望在保存表单之前添加新行时更新行的成本字段。但是,该值没有更新,onchange调用返回一个空值(这是我在提琴手看到的)。

{"jsonrpc": "2.0", "id": 844836927, "result": {"value": {}}}

此片段是包含相关代码的较大类的一部分:

class Shipping(models.Model):    
    _name = 'shipping.shipping'
    shipping_cost = fields.Float(string='Shipping cost')
    shipping_line_ids = fields.One2many('shipping.line', 'shipping_id', string='Shipping items')

    @api.onchange('shipping_line_ids')
    def onchange_shipping_line_ids(self):    
        number_of_items = len(self.shipping_line_ids)
        if number_of_items == 0:        
            return    
        line_cost = self.shipping_cost / number_of_items    
        for line in self.shipping_line_ids:        
            line.cost = line_cost

class ShippingLine(models.Model):    
    _name = 'shipping.line'    
    shipping_id = fields.Many2one('shipping.shipping', string='Shipping') 
    cost = fields.Float(string='Cost')

我在这里做错了什么?

标签: odooodoo-10

解决方案


推荐阅读