odoo 对字段权限控制技巧

2021-01-29  本文已影响0人  grey_27

odoo 的权限可以分为对模型,对记录,对字段,但是对字段的权限仅仅只能控制字段的只读,隐藏,必填,无法做到按权限组对字段设置不同的权限,原生没有快捷简单的方法实现,但其实是可以通过继承视图来曲线救国达到这一目的

比如现在我去设置一个字段只能只读

<record id="test_fun_view_form" model="ir.ui.view">
        <field name="name">test.fun.view.form</field>
        <field name="model">test.fun</field>
        <field name="arch" type="xml">
            <form>
                <sheet>
                    <group>
                        <field name="name" readonly="1"/>
                    </group>
                </sheet>
            </form>
        </field>
</record>

此时name字段对所有人都是只读的,如果想要特定权限组的人可编辑,可以做个继承视图

<record id="test_fun_view_form_inherit" model="ir.ui.view">
        <field name="name">test.fun.view.form.inherit</field>
        <field name="model">test.fun</field>
        <field name="inherit_id" ref="test_model.test_fun_view_form"/>
        <field name="groups_id" eval="[(6, 0,[ref('base.group_system')])]"/>
        <field name="arch" type="xml">
                <xpath expr="sheet//field[@name='name']" position="attributes">
                        <attribute name="readonly">0</attribute>
                </xpath>
        </field>
</record>

重点就是对视图设置groups_id, groups_id没有值即是视图所有人可见,但是如果有设置那么只有groups_id指定的权限组可以看见这个视图,在继承视图里对字段的readonly属性改写,如果这这个继承视图可见的用户则会改写成功,name字段可编辑,如果没有这个继承视图权限的用户则只能看见默认的视图,name字段还是readonly

有了这个方法后就可以对同一个字段不同用户设置不同的权限,达到对字段权限的更精细控制

上一篇 下一篇

猜你喜欢

热点阅读