仅当我未单击“完成”或“取消”时,我才想使状态栏可单击。 如果状态为“完成”或“取消”,则我无权单击“草稿”或“ in_progres”。 我的代码的问题在于,无论状态如何,statusbar都不容易理解。
<field name="state" nolabel="1" widget="statusbar"
statusbar_visible="draft,in_progress,done,canceled"
statusbar_colors="{'new':'blue'}"
attrs="{'clickable':[('state', 'not in', ['done','canceled')]]}"
/>
请帮忙吗? 谢谢。
答案 0 :(得分:0)
我有一个想法可以满足您的要求,所以首先,
您必须像这样在当前模型中创建一个字段,
clickable_bool = fields.Boolean(compute="_compute_clickable", string="Clickable?")
具有这种计算方法,
@api.multi
def _compute_clickable(self):
for rec in self:
if self.state not in ['done','canceled']:
rec.clickable_bool = True
else:
rec.clickable_bool = False
现在转到您的xml文件,该文件的标头标记中包含您的状态字段。
像这样编辑它:-
<field name="clickable_bool" invisible="1"/>
<field name="state" nolabel="1" widget="statusbar"
statusbar_visible="draft,in_progress,done,canceled"
statusbar_colors="{'new':'blue'}"
options="{'clickable': '1'}"
attrs="{'invisible': [('clickable_bool', '=', False)]}"
/>
<field name="state" nolabel="1" widget="statusbar"
statusbar_visible="draft,in_progress,done,canceled"
statusbar_colors="{'new':'blue'}"
attrs="{'invisible': [('clickable_bool', '=', True)]}"
/>
如果您对代码感兴趣,那么您将必须将状态设置为两个字段,或者根据您的布尔值,一个字段是不可见的,另一个字段是可见的。
随便问。