【问题标题】:How to get values in onchange with sudo()如何使用 sudo() 获取 onchange 中的值
【发布时间】:2019-08-31 17:37:52
【问题描述】:

我添加了一个 onchange 方法,在那个 onchange 方法中,我在访问 many2one 字段时使用了 sudo()。

但是使用 sudo(),我无法使用 sudo 获取记录的值。 那么如何使用 sudo() 获取 onchange 记录 (<odoo.models.NewId object at 0x7fba62f7b3d8>) 的值。

这里是示例代码:

@api.onchange('product_id')
    def onchange_product_id(self):
        for record in self:
            print(record.product_id)
            print(record.sudo().product_id)

实际结果:

product.product(13,)
product.product()

预期结果:

product.product(13,)
product.product(13,)

【问题讨论】:

    标签: odoo onchange


    【解决方案1】:

    这是因为记录集不存在于当前事务之外。因此,您当前的用户可以看到内容,而其他用户则不能。

    代码在我看来不错,事实上,如果你看到path_to_v12/addons/hr_expense/models/hr_expense.py 563-567 行,你会看到类似的代码:

    @api.onchange('employee_id')
    def _onchange_employee_id(self):
        self.address_id = self.employee_id.sudo().address_home_id
        self.department_id = self.employee_id.department_id
        self.user_id = self.employee_id.expense_manager_id or 
        self.employee_id.parent_id.user_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 1970-01-01
      相关资源
      最近更新 更多