【问题标题】:Odoo 8 Wizard Error: "For this kind of document, you may only access records you created yourself."Odoo 8 向导错误:“对于此类文档,您只能访问您自己创建的记录。”
【发布时间】:2016-10-29 09:10:34
【问题描述】:

我制作了一个包含很多字段的模型 A。它与最小模型 B 具有 Many2one 关系。B 只有一个 name = fields.Char(...) 字段。

现在我有一个瞬态模型 C,它是一个向导,其字段对应于模型 A 的字段。因此,当用户在向导上输入一些数据或选择最小模型 B 的预定义值之一时,它会创建模型C的记录并保存数据。

只要我只对一个用户使用该向导,它就可以正常工作。由于我必须能够与我想要的尽可能多的用户一起使用它,我已经对两个用户进行了测试,现在奇怪的事情发生了:

假设我有多个模型 B 的预定义记录,我将它们命名为 B1、B2 等。如果用户 1 使用向导并选择 B1 并创建模型 A 的记录,一切正常。如果用户 2 对 B2 执行相同操作,则一切正常。但如果用户 2 想要使用向导并选择 B1,则会出现以下错误:

Access denied
For this kind of document, you may only access records you created yourself.
(Document type: [modulename.wizard_model_C])

如果用户 1 想要在选择模型 B2 的情况下使用向导,也会发生同样的事情。 我不知道出了什么问题。这是我尝试过的:

  • 删除所有记录规则 -> 没有任何改变
  • 将所有访问规则设置为全局和 1,1,1,1 -> 没有任何改变

我会很高兴能找到问题所在的一些提示。模型 B 是罪魁祸首吗?还是精灵模型C的Many2one关系?

【问题讨论】:

  • 嗨,你解决了吗?

标签: python openerp odoo-8 wizard


【解决方案1】:

只需将s 添加到char,将name = field.Char 更改为name = fields.Char

并重新启动服务。

【讨论】:

  • 您好,感谢您的回答,但这不是问题所在。在代码中它已经拼写正确。对不起。我编辑了我的问题。
【解决方案2】:

这意味着您在模型 osv.osv_memory 或 models.Transient 中存在问题(写入或取消链接)..

osv_memory 或瞬态将保存在临时内存中。如果用户使用向导。

例如 table_transient_x 你有数据
id、create_uid、姓名、年龄
499, 5, '蝙蝠侠', 29
500, 6, '巴鲁丁', 20
501, 5, 'Sumanto', 40

案例 1: 您的代码尝试按用户 ID:5 更新第 499 行,但因为您的代码得到错误的行,例如由用户 ID:6 创建的 500。

您的代码将从 models.py 第 3557 行收到错误

案例 2: 在 osv_memory 或瞬态中添加相关字段。(不要使用相关字段)

希望对你有帮助:)

【讨论】:

  • 感谢老答案,在危急情况下它可以帮助我!!!!
猜你喜欢
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2019-03-23
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多