Show/Hide 个字段(如果列表中没有)
Show/Hide fields if there is not in list
我的想法是我在 Odoo 上有 5 个不同的访问级别。
我想检查登录用户是否在列表中(列表由自动操作创建),如果是,则显示字段,否则隐藏它们。
我的代码:
list_of_users= []
if record.user_id.partner_id.id: #level 1 user add on list
list_of_users.append(record.user_id.partner_id.id)
if record.user_id.sale_team_id.user_id.partner_id.id: #level 2 user add on list
list_of_users.append(record.user_id.sale_team_id.user_id.partner_id.id)
if record.user_id.sale_team_id.regional_manager_id.partner_id.id: #level 3 user add on list
list_of_users.append(record.user_id.sale_team_id.regional_manager_id.partner_id.id)
user_ids = record.env['res.users'].search([])
flag = record.env['res.users'].search([('groups_id','ilike','L4')])
for user_ids in flag: #level 4 and 5 users add on list
user_record = record.env['res.users'].browse(user_ids)
list_of_users.append(user_ids.partner_id.id)
record.update({'x_partner_follower_custom': [(6, 0, list_of_users)]})
在视图中,我在我想要 show/hide
的字段中使用 attrs="{'invisible': [('x_partner_follower_custom', '=', False)]}"
x_partner_follower_custom
: many2many res.partner 字段
输出样本:
如您所见,我 return 用户返回查看,但似乎 attrs
设置不正确。知道如何解决吗?
首先,该字段不应该是 stored
并且每次都必须计算它,因为它 depends
基于当前记录的值 user
,删除 store
:
@api.depends('x_partner_follower_custom')
def user_exist(self):
for rec in self:
if rec.x_partner_follower_custom and self.env.user.partner_id.id in rec.x_partner_follower_custom.ids:
rec.your_boolean_field_name = True
else:
rec.your_boolean_field_name = False
所以该字段取决于 x_partner_follower_custom
和当前登录的用户,它不应该是 stored
。
编辑
一切都在表单视图中进行了解释,以及如何使代码像在代码中创建的那样工作:
我设法找到解决方案,几天前:@Fotic
for record in self:
if record['x_partner_follower_custom'] and self.env.user.partner_id.id in record['x_partner_follower_custom'].ids:
record['x_partner_is_follower_custom'] = True
else:
record['x_partner_is_follower_custom'] = False
我的想法是我在 Odoo 上有 5 个不同的访问级别。
我想检查登录用户是否在列表中(列表由自动操作创建),如果是,则显示字段,否则隐藏它们。
我的代码:
list_of_users= []
if record.user_id.partner_id.id: #level 1 user add on list
list_of_users.append(record.user_id.partner_id.id)
if record.user_id.sale_team_id.user_id.partner_id.id: #level 2 user add on list
list_of_users.append(record.user_id.sale_team_id.user_id.partner_id.id)
if record.user_id.sale_team_id.regional_manager_id.partner_id.id: #level 3 user add on list
list_of_users.append(record.user_id.sale_team_id.regional_manager_id.partner_id.id)
user_ids = record.env['res.users'].search([])
flag = record.env['res.users'].search([('groups_id','ilike','L4')])
for user_ids in flag: #level 4 and 5 users add on list
user_record = record.env['res.users'].browse(user_ids)
list_of_users.append(user_ids.partner_id.id)
record.update({'x_partner_follower_custom': [(6, 0, list_of_users)]})
在视图中,我在我想要 show/hide
的字段中使用attrs="{'invisible': [('x_partner_follower_custom', '=', False)]}"
x_partner_follower_custom
: many2many res.partner 字段
输出样本:
如您所见,我 return 用户返回查看,但似乎 attrs
设置不正确。知道如何解决吗?
首先,该字段不应该是 stored
并且每次都必须计算它,因为它 depends
基于当前记录的值 user
,删除 store
:
@api.depends('x_partner_follower_custom')
def user_exist(self):
for rec in self:
if rec.x_partner_follower_custom and self.env.user.partner_id.id in rec.x_partner_follower_custom.ids:
rec.your_boolean_field_name = True
else:
rec.your_boolean_field_name = False
所以该字段取决于 x_partner_follower_custom
和当前登录的用户,它不应该是 stored
。
编辑
一切都在表单视图中进行了解释,以及如何使代码像在代码中创建的那样工作:
我设法找到解决方案,几天前:@Fotic
for record in self:
if record['x_partner_follower_custom'] and self.env.user.partner_id.id in record['x_partner_follower_custom'].ids:
record['x_partner_is_follower_custom'] = True
else:
record['x_partner_is_follower_custom'] = False