如何在 openerp 中设置只读字段并使用 on_change 方法更改值
How to set a field readonly in openerp and change value witn on_change method
我已将 sequence
字段的只读选项设置为 1
,而不是当我尝试从 on_change
方法更改值时单击保存按钮后该值被丢弃。
这是我的代码:
<record id="view_attachment_form_inherit" model="ir.ui.view">
<field name="name">ir.attachment.inherit</field>
<field name="model">ir.attachment</field>
<field name="inherit_id" ref="base.view_attachment_form"/>
<field name="arch" type="xml">
<field name='name' position="after">
<field name='sequence' readonly='1'/>
<group>
<field name='number' on_change='number_change(number)'/>
</group>
</field>
</field>
</record>
Python代码:
def number_change(self, cr, uid, ids, number, context=None):
# do test for this number
return {'value': {'sequence': 'new sequence'} }
如何更改才能保存?
web 客户端不会将只读字段发送回后端(因为它们是只读的,因此不会更改)。
解决方法是隐藏 'sequence' 字段,并删除 readonly="1" 属性。
如果您仍想查看序列的值,请在您的模型中添加一个虚拟字段 "sequence_ro",您可以使用 readonly='1' 显示它,并在 onchange 方法中更新。
另一种方法是使用 the read only bypass module
我已将 sequence
字段的只读选项设置为 1
,而不是当我尝试从 on_change
方法更改值时单击保存按钮后该值被丢弃。
这是我的代码:
<record id="view_attachment_form_inherit" model="ir.ui.view">
<field name="name">ir.attachment.inherit</field>
<field name="model">ir.attachment</field>
<field name="inherit_id" ref="base.view_attachment_form"/>
<field name="arch" type="xml">
<field name='name' position="after">
<field name='sequence' readonly='1'/>
<group>
<field name='number' on_change='number_change(number)'/>
</group>
</field>
</field>
</record>
Python代码:
def number_change(self, cr, uid, ids, number, context=None):
# do test for this number
return {'value': {'sequence': 'new sequence'} }
如何更改才能保存?
web 客户端不会将只读字段发送回后端(因为它们是只读的,因此不会更改)。
解决方法是隐藏 'sequence' 字段,并删除 readonly="1" 属性。
如果您仍想查看序列的值,请在您的模型中添加一个虚拟字段 "sequence_ro",您可以使用 readonly='1' 显示它,并在 onchange 方法中更新。
另一种方法是使用 the read only bypass module