【问题标题】:AccessError when users edit many2one field in custom module用户在自定义模块中编辑 many2one 字段时出现 AccessError
【发布时间】:2016-12-17 16:39:33
【问题描述】:

我创建了一个自定义模块来将一些字段添加到合作伙伴数据中。一切似乎都运行良好,但没有管理员用户不能编辑 many2one 字段。它显示以下消息(好像该模型的任何权限配置有误):

按照您的要求完成后,会发生以下情况:

这是我得到的错误:

Exception: Fall\xf3 el m\xf3dulo cargando cant_neg_dir: no se pudo procesar el archivo cant_neg_dir/security/ir.model.access.csv: Line 1 : No se han encontrado registros coincidentes para id. externo 'group_name_test_user' en el campo 'Object'

这就是我的文件中的内容:

ir.model.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sector_user,sector.user,group_name_test_user,base.group_user,1,1,1,1

cant_dir_security.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="0">
        <record model="ir.module.category" id="module_category_name_test">
            <field name="name">Management</field> 
            <field name="sequence">7</field>
        </record>
        <record id="group_name_test_user" model="res.groups">
            <field name="name">User</field>
            <field name="category_id" ref="module_category_name_test"/>
            <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
        </record>
        <record id="group_name_test_manager" model="res.groups">
            <field name="name">Manager</field>
            <field name="category_id" ref="module_category_name_test"/>
            <field name="implied_ids" eval="[(4, ref('group_name_test_user'))]"/>
            <field name="users" eval="[(4, ref('base.user_root'))]"/>
        </record>
    </data>
</openerp>

cant_neg_dir.py

import openerp
from openerp.osv import fields, osv, orm
from openerp import models


class poligono(models.Model):
    _name = "poligono"
    _rec_name= "poligono_name"
    _columns = {
        'poligono_name': fields.char('Polígono', required=True),   
}  

class sector(models.Model):
    _name = "sector"
    _rec_name= "sector_name"
    _columns = {
        'sector_name': fields.char('Sector', required=True),   
}   

class municipio(models.Model):
    _name = "municipio"
    _rec_name= "municipio_name"
    _columns = {
        'municipio_name': fields.char('Municipio', required=True),   
}

再次感谢您的帮助。

问候。

【问题讨论】:

  • 有人可以帮忙吗?

标签: python openerp odoo-8 openerp-8


【解决方案1】:

您需要授予对新对象的安全访问权限。

我们可以通过代码来实现。例如:

access_sector,sector.user,model_sector,base.group_user,1,1,1,1

更多详情security/ir.model.access.csvOdoo Security Documentation.

编辑

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sector,sector.user,model_sector,base.group_user,1,1,1,1

编辑

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sector_user,sector.user,your_module_name.group_name_test_user,base.group_user,1,1,1,1

并确保 openerp.py 文件看起来像以下位置文件名

cant_dir_security.xml
ir.model.access.csv

【讨论】:

  • 非常感谢您的快速回答!我不明白...我需要将它添加到我的 .py 模型代码中吗?
  • 不。您需要使用 security 创建一个文件夹名称,并在其中创建 ir.model.access.csv 并放置答案代码。不要忘记在 openerp.py 中提到文件,我在给定的链接中已经非常清楚地回答了。您只需要用已回答的线路换行即可。
  • 非常感谢 Odebra 的帮助,但现在我在安装模块时在第 1 行出现错误。
  • 非常感谢 Odebra 的帮助,但现在我在安装模块时在第 1 行出现错误:第 1 行:access_sector
  • 你误会了。我已经编辑了我的答案尝试使用它。第一行是字段的标签,第二行是字段的值,依此类推。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 2019-08-15
相关资源
最近更新 更多