簡體   English   中英

根據當前用戶組創建不可見字段(self.env.user.has_group 不起作用)Odoo 14

[英]Make invisible field based on current user groups (self.env.user.has_group not working) Odoo 14

我需要讓一些字段對管理員不可見。 因此,我創建了一個 function 字段來保存 boolean 值。 function如下:

check_user = fields.Boolean(string='user', compute='_compute_user_check', default=False)

    def _compute_user_check(self):
        if self.env.user.has_group('base.user_admin'):
            self.check_user = True

在 XML 上我使用:

<field name="model">res.users</field>
            <field name="inherit_id" ref="base.view_users_form"/>
            <field name="arch" type="xml">
                    <group string="Test" attrs="{'invisible': [('check_user','=', True)]}" >
                    </group>
                    <field name="check_user" invisible="1"/>
                </group>
            </field>

顯然 check_user 總是有 True 價值。 我的代碼有什么問題? 請任何幫助。 謝謝。

您必須始終將值設置為一個值。 試試看。

def _compute_user_check(self):
    if self.env.user.has_group('base.user_admin'):
        self.check_user = True
    else:
        self.check_user = False

英格

由於您嘗試在domain添加的字段然后進行search並且該字段未store在數據庫中,因此它不起作用。

check_user = fields.Boolean(string='user', compute='_compute_user_check', default=False, store=True)

此外,您還可以添加調用方法的依賴項。

@api.depends('field1', 'field2')
def _compute_user_check(self):
    if self.env.user.has_group('base.user_admin'):
        self.check_user = True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM