gpt4 book ai didi

odoo - Odoo 中使用和不使用 sudo() 的区别

转载 作者:行者123 更新时间:2023-12-04 10:00:35 24 4
gpt4 key购买 nike

有什么不同:

test = self.env['my.example'].sudo().create({'id':1, 'name': 'test'})

test = self.env['my.example'].create({'id':1, 'name': 'test'})

所有示例都有效,但使用 sudo() 有什么优势? ?

最佳答案

奥杜 8–12

调用sudo() (不带参数)在调用 create() 之前将返回带有管理员( super 用户)用户 ID 集的更新环境的记录集。这意味着对您的记录集的进一步方法调用将使用管理员用户并因此绕过访问权限/记录规则检查 [ source ]。 sudo()也接受一个可选参数user这是将在环境中使用的用户 ID(res.users)(默认为 SUPERUSER_ID)。

不使用时 sudo() , 如果调用你方法的用户没有 createmy.example 的权限模型,然后调用 create将失败并返回 AccessError .

因为没有为 super 用户应用访问权限/记录规则,sudo()应谨慎使用。此外,它可能会产生一些不良影响,例如。在多公司环境中混合来自不同公司的记录,由于缓存失效而额外重新获取(参见 Model Reference 中的环境交换一节)。

奥多 13+

从 Odoo 13 开始,调用 sudo(flag) 将返回具有 superuser mode 的环境中的记录集启用或禁用,取决于 flagTrueFalse , 分别。 super 用户模式不会改变当前用户,只是绕过访问权限检查。使用 with_user(user) 实际切换用户。

关于odoo - Odoo 中使用和不使用 sudo() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44174968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com