如何在openerp中设置readonly字段并使用on_change方法更改值

时间:2016-01-21 14:07:31

标签: python xml openerp

我为1字段设置了sequence的只读选项,而不是在我点击保存按钮后尝试从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'} }

如何更改以保存?

2 个答案:

答案 0 :(得分:2)

只读字段不会被Web客户端发送回后端(因为它们是只读的,所以它们不会更改)。

解决方法是隐藏'sequence'字段,并删除readonly =“1”属性。

如果您仍想查看序列的值,请在模型中添加一个虚拟字段“sequence_ro”,您可以使用readonly ='1'显示该字段,并在onchange方法中更新。

答案 1 :(得分:1)

另一种方法是使用the read only bypass module