我制作了一个包含很多字段的模型 A。它与最小模型 B 具有 Many2one 关系。B 只有一个 name = fields.Char(...)
字段。
现在我有一个 transient 模型 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型是罪魁祸首吗?还是 Sprite 模型C的Many2one关系?
最佳答案
这意味着您在模型 osv.osv_memory 或 models.Transient 中遇到问题(写入或取消链接)..
osv_memory或transient将保存在临时内存中。如果用户使用向导。
例如 table_transient_x 你有数据
id、create_uid、姓名、年龄
499、5、“ bat 侠”、29
500, 6, '巴鲁丁', 20
501, 5, '苏曼托', 40
案例1: 您的代码尝试通过用户 ID:5 更新第 499 行,但因为您的代码获取了错误的行,例如由用户 ID:6 创建的 500 行。
您的代码将从 models.py 第 3557 行收到错误
案例2: 在 osv_memory 或 transient 中添加相关字段。(不要使用相关字段)
我希望这对你有帮助:)
关于python - Odoo 8 向导错误 : "For this kind of document, you may only access records you created yourself.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38052515/