[英]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.