python - Odoo 8 向导错误 : "For this kind of document, you may only access records you created yourself."

标签 python odoo odoo-8 wizard

我制作了一个包含很多字段的模型 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/

相关文章:

python - 如何将 Python 多列表转换为列表

model-view-controller - ir.ui.view 中 iframe 的 Odoo 8 src 变量

python - 在 pytest 中模拟模块导入

report - 将变量 get_pdf() 保存到 fields.binary

odoo - 在ODOO中如何为同一产品下的不同变体指定不同的路由?

python - 这些 transient 模型的 ID 发生了什么?

python - 配置 Pycharm 调试 Odoo 8

python - 根据另外两个列和表在 Pandas 中创建列

python - 使用 Python/Jython 脚本在 Ignition 中动态显示 GUI 组件

python - 如何在 python 中对迭代器调用 __next__ n 次