当按钮需要在某些条件下进行隐藏时,需要用到attrs
例如:报废单进行报废时需要审批
state in (draft,validate,done)
批准的按钮需要显示在 当 state=validate
有需求为根据报废金额的大小 审批的人不同 因此多了一个level字段
<button name="action_validate" string="Validate" state='validate' type="object" class="oe_highlight" attrs="{'invisible':[('level','!=','one')]}" groups="sale_product.scrap_staff"/>
界面修饰器的内容{'invisible':[('level','!=','one'),('state','!=','validate')]} 乍一看 没有任何问题 但实际上这个表示 只要条件满足其一,其他的条件就不管了 state=''validate"这个条件是肯定满足的 所以 我后面在怎么加条件都是无用的
<button name="action_validate" string="Validate" type="object" class="oe_highlight" attrs="{'invisible':['|',('level','!=','one'),('state','!=','validate')]}" groups="sale_product.scrap_staff"/> 改成这个就好了
还有 attrs 判断字段为空时 只能用FALSE,不能用TRUE