odoo - Price_unit 只读解决方法 onchange
问题描述
所以我的目标是在销售订单行中设置 price_unit 为只读字段。但是当你这样做时,你会遇到 onchange 方法的问题,所以如果我只是在写入后添加属性只读 price_unit 总是为 0。
因此,作为解决方法,我创建了 onchange 方法来存储 price_unit 值,然后在 write 和 create 方法中将它们添加到 price_unit。
但是 write 方法中的 vals 没有 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
解决方案
推荐阅读
- graphql - FastAPI + GraphQL 出现错误 NoneType is callable when raise Exception
- ruby-on-rails - prune_strategy 在 capybara-screenshot 中不起作用,带有屏幕截图的文件夹不会自动清除
- php - 配置作曲家使用带前缀的类名
- javascript - Node.js Google Drive 客户端 - 下载文件时出错:response.data.on 不是函数
- sql - 如何禁用 Wordpress 中的所有评论?
- build - 矩阵客户端 (nheko) 需要另一个矩阵客户端进行构建
- sql-server - 如何更改 SQL Server 中的默认数据类型
- java - Dynamodb 通过存在文档类型 Map.AttributeName 扫描项目
- junit5 - JUnit5 控制台启动器未找到测试
- kubernetes - 如何在 kubernetes (microk8s) 中部署具有本地存储的 pod 而不会出现节点关联错误?