如何在openerp中设置字段只读,并通过on_change方法更改值

如何在openerp中设置字段只读,并通过on_change方法更改值

问题描述:

对于sequence字段,我设置了只读选项1,当我尝试更改on_change方法中的值时,我点击保存按钮后该值被删除。
这是我的代码:如何在openerp中设置字段只读,并通过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方法中进行更新。

+0

非常感谢。 – Zety

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