跳至内容

odoo 的参考字段 Reference(Not related) 字段

odoo 的参考字段 Reference(Not related) 字段

www.chinamaker.net 2017-07-25 09:41:00 admin

在 odoo 中,如果我们能确定模型之间的关系,我们可用 related 来关联目标模型的数据。如果我们不知道或者说事先不能决定目标模型时,如何能动态的关联目标模型呢?这种情况你需要 reference。使用 Referce 字段,我们将目标模型的选择权留给用户。

首先我们设想一个业务场景: 假定我们有一个通用的报废模块,报废可能是销售出库报废、采购入库报废、生产领料报废等,我们需要跟踪报废的来源,以便实现质量跟踪或者成本核算等业务逻辑。那么在 odoo 中怎么实现呢?

首先我们要定义一个方法,这个方法返回一个对象列表,用户可以从中选择报废动作的关联对象

class ScrappedModel(models.Model):
    #...
    @api.model
    def _referencable_models(self):
        models = self.env['res.request.link'].search([])  # 返回一个模型列表
    

然后,我们添加参考字段并使用上一个函数提供可选模型的列表:

doc_source = fields.Reference(selection='_referencable_models', string='Reference Document')
    

然后在视图中把该字段的 widget 设置为 reference:

重启 odoo 升级模块,就可以实现对象的动态关联了。

odoo 的参考字段 Reference(Not related) 字段
中国 Odoo, 苏州远鼎 2017年7月25日
标签
存档