odoo - 添加或删除行时更新所有 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')
我在这里做错了什么?
解决方案
推荐阅读
- sql - 在 SSRS 中使用参数的结果不正确
- string - 复杂性分析:从字符串中删除连续(3+)个重复项
- javascript - 在 npm 包中包含依赖包
- c# - 如何将三个单列拆分为一大列?
- asp.net - 具有二进制序列化的 ASP.NET Core 会话对象
- avfoundation - 没有调用 AVContentKeySessionDelegate 上的委托方法
- python - 输入框中的按键事件
- jenkins - Jenkins 节点插件抛出 npm-git 安装错误
- javascript - 在 React Redux 应用程序中的 Windows 10 上开玩笑“未找到测试,以代码 1 退出”错误
- java - 我将 Main 方法放在哪里?