如何知道在odoo中从哪个class调用了另一个class的方法

how to know from which class a method of another class is called in odoo

我有 2 个模型

它们是分开的 类

example.orderline 中有一个 many2one 字段 "stock" stock=fields.Many2one("product.product","Product")

我想为字段 "stock" 覆盖模型 "product.product" 的 name_get 方法 我成功了:

def name_get(self):
     result = []
     for record in self:
        default_code = record.default_code
        result.append((record.id, default_code))

    return result

但以上也适用于销售订单和采购订单。 如何命名 get 方法仅适用于 example.orderline 模型?

您可以在 example.orderline 模型视图端使用 context 属性来处理上述情况。

例如:

<field name="stock" context="{'display_my_name': True}"/>

现在检查 name_get() 方法中的上下文值。如果我们找到我们的上下文键,执行我们的自定义逻辑,否则 return super.

例如:

def name_get(self):
    if 'display_my_name' in self._context and self._context.get('display_my_name')
        result = []
        for record in self:
            default_code = record.default_code
            result.append((record.id, default_code))
        return result
    else:
        return super(YourClass, self).name_get()

这样就不会干扰其他form view字段值的显示