我添加了一个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,)
答案 0 :(得分:0)
这是因为记录集在当前事务之外不存在。这样您当前的用户可以看到内容,而其他用户则看不到。
代码对我来说看起来不错,实际上,如果您看到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