Python 当状态为';确认';?
当对象的状态更改为“Python 当状态为';确认';?,python,xml,odoo,odoo-10,Python,Xml,Odoo,Odoo 10,当对象的状态更改为“已确认””时,我需要表单中的所有字段都是只读的。到目前为止,我在每个字段中都添加了attrs=“{'readonly':[('state','=','confirated')]}”,但我想知道是否有任何方法可以使其更为优化。如果您想将该条件应用于模型的每个视图(在Odoo的不同部分中显示了多个表单视图的模型),最好用Python来指定它。在每个字段的定义中,应添加状态参数: your_field = fields.Whatever( ... readonly=
已确认”
”时,我需要表单中的所有字段都是只读的。到目前为止,我在每个字段中都添加了attrs=“{'readonly':[('state','=','confirated')]}”
,但我想知道是否有任何方法可以使其更为优化。如果您想将该条件应用于模型的每个视图(在Odoo的不同部分中显示了多个表单视图的模型),最好用Python来指定它。在每个字段的定义中,应添加状态
参数:
your_field = fields.Whatever(
...
readonly=False,
states={
'confirmed': [('readonly', True)],
}
)
这样,如果用户通过与您已修改的视图不同的视图打开模型,则如果状态已确认,则字段将为只读,而您未修改已打开的视图并不重要
另一方面,如果您只想在特定的表单视图中应用您的目的,您可以做一些比向每个字段添加attrs
更快的事情,例如将其添加到包含多个字段的标记中,如group
。这同样有效,而且对您来说速度更快:
<group attrs="{'readonly': [('state', '=', 'confirmed')]}">
<field name="your field_1"/>
<field name="your field_2"/>
...
</group>
...
IIRC没有更好的方法了。真棒@forvas