odoo通过uid控制字段可见
-
情景:
<button name=“action_countersign” type=“object” string="" attrs="{‘invisible’:[(‘user_id’, ‘!=’, uid)]}" />
需要根据当前登录用户控制该按钮是否可见。 -
方法一:
在res.users表中创建一个bool字段;
在需要控制的表单中创建一个计算字段temp,根据res.users表中的布尔字段计算
若res.users中的布尔字段为真,那么temp也为真
在视图中就用temp是否等于真控制显示。
<button name=“action_countersign” type=“object” string="" attrs="{‘invisible’:[(‘temp’, ‘!=’, True)]}" /> -
方法二:
在表中创建计算字段,计算字段根据当前登录用户id是否与该记录的员工的用户id相同,同则真,否则假。进而控制是否显示。
show_button = fields.Boolean(string=u'显示会签按钮', compute='_compute_show_btn')
@api.multi
def _compute_show_btn(self):
for record in self:
if record.employee_id.user_id.id == self.env.uid:
record.show_button = True
else:
record.show_button = False
<button name="action_countersign" type="object" string="会签"
attrs="{'invisible':[('show_button', '!=', True)]}" class="oe_highlight"/>