Odoo只读字段在onchange方法中被改变后不会保存到数据库

来源:互联网 发布:c语言 根号2 编辑:程序博客网 时间:2024/06/06 02:12

Readonly field in onchange method

If you change the value of a readonly field in onchange method, on save it will not be stored in the database. In order to do that you would need to override create/write methods where you would need to update the values dictionary with this value before creation.

For example, you would need to update the readonly field “invoice_method” the depends on the “partner_id” field. If you change its value in the onchange_partner_id method

@api.onchange('partner_id')def onchange_partner_id(self):    res = super(MrpRepair, self).onchange_partner_id()    self.invoice_method = self.partner_id.prepaid and 'b4repair' or 'after_repair'    return res

the new value will not be stored in the database on save. Instead, you would need to extend the create method and to update the “vals” dictionary before creation

@api.modeldef create(self, vals):    if vals.get('partner_id'):        vals.update({'invoice_method': self.env['res.partner'].browse(                    vals.get('partner_id')).prepaid and 'b4repair' or 'after_repair'})    return super(MrpRepair, self).create(vals)

总结:只读字段需要根据其他字段进行onchange的时候,直接在create方法中更新字段即可。这里还需要我们测试一下,记录创建好之后,写在create方法中的方法就不会走了,是否考录需要修改再write方法里。

From:http://www.odooninja.com/readonly-field-onchange-method/

阅读全文
0 0
原创粉丝点击