odoo 8,模型权限问题



我正在尝试用读取公司数据

for company in self.pool('res.company').browse(cr, uid, uid):
    company.vat <=== code breaks here

如果我使用管理员(uid 1)帐户,我会看到company.vt。但如果我使用任何其他帐户(具有res.company权限),我会收到一条消息:"您试图访问的一个文档已被删除…"

这是权限问题还是某种编码错误?请注意,如果我硬编码1而不是uid作为浏览函数的参数,它就可以工作了。

感谢

  1. 首先,如果你的odoo中只有一家公司,默认情况下,当你创建时,它将以id"1"创建
  2. 您可以使用"Administrator"访问该记录,因为管理员用户的id也是"1"。因此,这导致browse(cr,uid,uid)被(cr,1,1)取代。由于管理员的uid="1",并且只有公司记录的id也是"1"
    3.当你使用不同的用户登录时,uid不会是"1"。因此,在这种情况下,您无法使用uid读取该公司,因为('uid!=1','company_id=1')不匹配。在这种情况下,您可能会收到类似"您试图访问的某个文档已被删除"的错误
    4.所以你要做一件事,首先执行一个搜索操作,这将产生company_id,然后通过读取公司来重复for循环
company_pool = self.pool.get("res.company")
company_ids = company_pool.search(cr, uid, [])
for company in company_pool.browse(cr, uid, company_ids):
    company.vat

试试这个

from openerp import SUPERUSER_ID
self.pool('res.company').browse(cr, SUPERUSER_ID, uid)

最新更新