虽然odoo的错误提示已经很完善了,但是还是有些时候不能快速定位问题的原因,比如,我在写一个新的报表的时候,提示了如下这么一个错误:
1 | The requested operation ("read" on "Users" (res.users)) was rejected because of the following rules: |
看样子是某个规则出了问题,但是却没有提示是哪个规则。
没办法 ,我们只好在代码中加日志输出,然后发现了程序访问了两次res.users的对象,尽管查询的字段都一样,但是返回的结果却是不同的,造成了上面的一个困惑:当前用户是管理员却访问不了管理员对象???
实际上,这个错误提示的并不清晰,虽然提示的是res.users对象,实际的错误确实发生在访问res.users的partner_id字段时,也就是真正的错误原因是res.partner对象引起的。
经过排查,发现错误的原因是限制了管理员的res.partner的访问导致了该问题。