odoo 8,模型权限问题

odoo 8, Issue with permissions over models

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

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

如果我使用管理员 (uid 1) 帐户,我会看到 company.vat。但是,如果我使用任何其他帐户(具有 res.company 的权限),我会收到一条消息:"One of the documents you are trying to access has been deleted..."

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

谢谢

试试这个

from openerp import SUPERUSER_ID

self.pool('res.company').browse(cr, SUPERUSER_ID, uid)
  1. 首先如果是你的odoo中只有一个公司的情况,默认情况下你创建时会创建id为“1”的公司。
  2. 您可以使用 "Administrator" 访问该记录,因为管理员用户的 ID 也是“1”。所以这导致 browse(cr, uid, uid) 被 (cr, 1, 1) 取代。由于管理员的uid = "1",只有公司记录的id也是"1"。
    3.When 您正在使用其他用户登录,uid 不会是“1”。因此,在那种情况下,您无法使用 uid 读取该公司,因为 ('uid != 1','company_id = 1') 不会 match.In 在这种情况下,您可能会收到类似 "One of the documents you are trying to access has been deleted".[=15 的错误=] 4.So 你做一件事,首先执行搜索操作,这将为你提供 company_ids 然后通过读取公司重复 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