Odoo 如何使用sudo()在onchange中获取值

Odoo 如何使用sudo()在onchange中获取值,odoo,onchange,Odoo,Onchange,我添加了一个onchange方法,在该onchange方法中,我在访问manyOne字段时使用了sudo() 但是使用sudo(),我无法使用sudo获取记录的值。 那么如何使用sudo()获取onchange记录的值呢 以下是示例代码: @api.onchange('product\u id')) def onchange_product_id(自身): 请自行记录: 打印(记录、产品标识) 打印(record.sudo().product\u id) 实际结果: product.produ

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

但是使用sudo(),我无法使用sudo获取记录的值。 那么如何使用sudo()获取onchange记录的值呢

以下是示例代码:

@api.onchange('product\u id'))
def onchange_product_id(自身):
请自行记录:
打印(记录、产品标识)
打印(record.sudo().product\u id)
实际结果:

product.product(13,)
product.product()
product.product(13,)
product.product(13,)
预期结果:

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

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

代码在我看来很好,事实上,如果您看到
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

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

代码在我看来很好,事实上,如果您看到
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