所以我的目标是使销售订单行中的price_unit为只读字段。但是,当您执行此操作时,onchange方法就会出现问题,因此,如果我仅在写入后将属性read_unit添加为只读,则其总为0。
因此,作为解决方法,我制作了onchange方法来存储price_unit值,然后在写入和创建方法中将它们添加到price_unit中。
但是write方法中的val没有price_unit_values,但是同时,我的onchange方法将它们更早地添加到price_unit_values中。
我收到此错误
if vals['price_unit_values']:
KeyError: 'price_unit_values'
<xpath expr="/form/sheet/notebook/page/field/tree/field[@name='price_unit']" position="attributes">
<attribute name="readonly">1</attribute>
</xpath>
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
price_unit_values = fields.Float(string='Price Unit Values', digits=(6, 2), required=False)
@api.onchange('price_unit')
def _onchange_price_unit(self):
for rec in self:
if rec.price_unit:
rec.price_unit_values = rec.price_unit
@api.multi
def write(self, vals):
if vals['price_unit_values']:
vals['price_unit'] = vals['price_unit_values']
return super(SaleOrderLine, self).write(vals)
@api.model
def create(self, vals):
if vals['price_unit_values']:
vals['price_unit'] = vals['price_unit_values']
rec = super(SaleOrderLine, self).create(vals)
return rec