当前位置: 代码迷 >> python >> Odoo 10 - 计算链接记录的值
  详细解决方案

Odoo 10 - 计算链接记录的值

热度:73   发布时间:2023-06-13 16:58:08.0

在 Odoo 10 中,我创建了自己的自定义应用程序(使用新的工作室功能),但是我在尝试计算属于不同视图的记录之间的数据时遇到了问题。

在场景中,我有两个模型(模型 A 和模型 B),其中模型 B 中的记录通过 many2one 关系字段连接到模型 A 中的记录。 模型 B 中有一个字段可以计算输入到其中的数值。

理想情况下,我想要实现的是某种形式的自动操作/服务器操作,它循环遍历模型 A 中的记录,然后循环遍历模型 B 中的相关记录,将前面提到的数值字段的值加在一起并设置值在继续到下一条记录之前,模型 A 中的字段等于等号。

例如,说字段名称是:
模型 A = x_a
- 模型 A ID 字段 = x_id_field
- 计算值的目标字段 = x_compute

模型 B = x_b
- many2one 字段 = x_a_id
- 数字字段 = x_value_field

我尝试使用自动化操作来执行一些基本的 Python 代码(因为我认为这会像嵌套循环一样简单)但是由于不熟悉如何在 odoo 中循环记录以及如何循环,我所有的尝试都失败了访问其他模型及其记录(来自python)。

我将如何实现这一目标?

理想情况下,我想要实现的是某种形式的自动操作/服务器操作,它循环遍历模型 A 中的记录,然后循环遍历模型 B 中的相关记录,将前面提到的数值字段的值加在一起并设置值在继续到下一条记录之前,模型 A 中的字段等于等号。

使用相关文档模型创建自动化操作 = 模型 a 在操作选项卡上创建服务器操作:

model_b_records = self.env['model_b'].search([('many2one_field', '!=', False)])

for record in model_b_records:
    record.many2one_field.target_field_for_computed_value = record.numerical_field

保存服务器操作并执行它。

代码应该是不言自明的,如有任何问题,请随时在下面提问和评论。