【问题标题】:Odoo 10 - Counting values of linked recordsOdoo 10 - 计算链接记录的值
【发布时间】:2017-02-13 01:16:31
【问题描述】:

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

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

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

例如,假设字段名称为:
Model A = x_a
- 模型 A ID 字段 = x_id_field
- 计算值的目标字段 = x_compute

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

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

我将如何实现这一目标?

【问题讨论】:

    标签: python openerp odoo-10


    【解决方案1】:

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

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

    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
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多