对于Admin,Manager我希望显示每条记录,对于普通用户,我只想显示由该特定用户创建的记录

时间:2018-01-31 12:34:29

标签: odoo openerp-7

如何根据登录用户过滤树视图的记录。对于管理员,经理我希望显示每条记录,对于普通用户,我只想显示由该特定用户创建的记录。

下面的代码示例我试过

对于经理uid=12

对于管理员uid=1

 <field name="domain">[('|',('create_uid','=',uid),('|',(uid,'=','1'),(uid,'=','12')))]</field>

上面的代码示例是抛出错误

  

“ValueError:无效的叶子['|',['create_uid','=',1],['|',[1,'=',   '1'],[1,'=','12']]]“

2 个答案:

答案 0 :(得分:1)

行级访问规则在ir.rule模型中定义,可以通过向模块添加相应的xml文件来创建。该文件通常存储在模块目录的security /文件夹下。

例如,我将user.purchase.records作为模型

<?xml version="1.0" encoding="utf-8"?>
<odoo>
  <data>
    <record id="user_purchase_record_rule" model="ir.rule">
      <field name="name">Records created by current user only</field>
      <field name="model_id" ref="model_user_purchase_records"/>
      <field name="domain_force">[('create_uid','=',user.id)]</field>
      <field name="groups" eval="[(4,ref('base.group_user'))]"/>
    </record>
  </data>
</odoo>

最后在manifest.py文件中添加此文件路径。

答案 1 :(得分:0)

由3个元素(field_in_your_model, operator, value)组成的域,我不知道你是使用已知模型还是你的定义,但你得到了这个错误,因为 uid 它是odoo的保留字,而不是模型中的字段。 对于您的要求,最佳方法是为您的用户组制定规则,例如销售组

销售/用户的规则:仅限自己的文件

['|',('user_id','=',user.id),('user_id','=',False)]

我跳这个答案对你很有帮助。