【问题标题】:Disable updating filter in Odoo在 Odoo 中禁用更新过滤器
【发布时间】:2018-09-16 00:11:14
【问题描述】:

我已经创建了一个搜索视图并在其中定义了我的过滤器:

<record id="dept_search_view" model="ir.ui.view">
<field name="name">employee.search.view</field>
 <field name="model">employee</field>
<field name="arch" type="xml">
    <search string="dept_search">
        <filter string="Department" name="dept_search" domain="[('e_dept', 'in', ['HR','Audit'])]">

        </filter>

    </search>
</field>

我将过滤器添加到了我想默认应用过滤器的视图中。

<record model="ir.ui.view" id="view_employee_tree">
    <field name="name">employee.tree</field>
    <field name="model">employee</field>
   <field name="context">{"search_default_dept_search":1}</field>
    <field name="priority" eval="8" />
    <field name="arch" type="xml">
        <tree string="Employee">
            <field name="e_dept"/>
            <field name="employee_id"/>
            <field name="employee_name"/>
        </tree>
    </field>
</record>

但是,用户仍然可以删除搜索栏中的默认过滤器。如何防止用户删除过滤器

【问题讨论】:

    标签: xml view filtering odoo searchview


    【解决方案1】:

    您可以在查看操作中提供相同的域,因此默认情况下可以对其进行过滤,并且任何人都无法删除。

    <field name="domain">[('e_dept', 'in', ['HR','Audit'])]</field>
    

    【讨论】:

      【解决方案2】:

      默认情况下,odoo 允许您在搜索视图中删除过滤器。

      根据您所说,我认为您不需要用户查看其他记录。 您可以通过两种技术来做到这一点,一种容易使用动作定义

        <record id="your_action_id" model="ir.actions.act_window">
             ....
             ....
             ....
             ....
             <!-- in your action definition just add a domain like this -->
             <field name="domain">[('e_dept', 'in', ['HR','Audit'])]</field>
        </record>
      

      在这种技术中,当所有用户点击执行的菜单时,odoo 会为他们提供 此操作他们将只看到与域匹配的记录。如果这是你 想用。

      有时您希望保留相同的菜单,但您希望他们看到的用户组 仅与域匹配的记录,但对于其他用户组(如管理员) 您希望他们查看所有记录。您需要使用ir.rule 来执行此操作。

      假设您希望他们看到的用户组仅记录与您的匹配 域名是:'hr_audi_group'

       <record model="ir.rule" id="hr_audi_group_rule">
              <field name="name">Show only 'HR' and 'Audit' record for hr_audi_group</field>
              <field name="model_id" ref="model_employee"/>
              <field name="domain_force">[('e_dept', 'in', ['HR','Audit'])]</field>
               <field name="perm_read" eval="True"/>
              <field name="perm_create" eval="True"/>
              <field name="perm_write" eval="True"/>
              <field name="perm_unlink" eval="True"/>
              <-- this rule will be applied only for users that belong to this group -->
              <field name="groups" eval="[(4,ref('hr_audi_group')]"/>
          </record>
      

      因此,在同一菜单中,对于某些用户,它将显示所有记录,但对于属于该用户的用户 到 hr_audi_group 他们只会看到部分记录。

      希望对你有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多