如何在 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