python - 如何将两个值作为字符串连接到odoo Char字段中?
问题描述
我正在尝试从另一个模型中获取字段,然后对它们进行一些操作,逻辑没有问题,但是当方法运行时出现此错误
psycopg2.DataError:双精度类型的无效输入语法:“1.007 t”
这些都是我所做的
class uom_custom(models.Model):
_inherit = 'product.template'
uom_qty = fields.Char(store=True,compute='get_qty')
@api.depends('qty_available')
def get_qty(self):
uoms=self.env['uom.uom'].search(['&',('category_id', '=', self.uom_id.category_id.id),('show_qty','=',True)])
if uoms.uom_type == 'bigger':
self.uom_qty= str(str(self.qty_available / uoms.factor_inv) + ' ' + uoms.name)
elif self.uom_type =='smaller':
self.uom_qty= str(self.qty_available * uoms.factor_inv) + ' ' + uoms.name
else:
self.uom_qty= str(self.qty_available) + ' ' + uoms.name
return self.uom_qty
那么如何在它旁边显示数学运算的值和 uom 名称提前谢谢
解决方案
该错误表明数据库中的列被定义为双精度。你确定你已经重启了 Odoo 并更新了你的模块吗?
您的计算方法中存在一些常见错误。首先,我不能经常重复它:尝试坚持 Odoo 命名指南并命名它compute_uom_qty
。其次,如果没有特殊的装饰器,一个计算方法可以并且会被多个记录调用,因此循环这些记录。第三:您搜索的uom.uom
也可能导致多条记录。因此,要么将搜索限制为一条记录,要么/并检查是否找到了某些东西。uoms.name
可能导致 SingletonError。最后:您不必在计算方法中返回任何内容。
@api.depends('qty_available')
def compute_uom_qty(self):
for record in self:
uoms = self.env['uom.uom'].search(
[('category_id', '=', record.uom_id.category_id.id),
('show_qty','=',True)], limit=1)
if uoms.uom_type == 'bigger':
qty = record.qty_available / uoms.factor_inv
record.uom_qty = "{} {}".format(qty, uoms.name)
elif uoms.uom_type =='smaller':
qty = record.qty_available * uoms.factor_inv
record.uom_qty = "{} {}".format(qty, uoms.name)
else:
record.uom_qty = "{} {}".format(record.qty_available, uoms.name)
推荐阅读
- arrays - 将数组中的元素复制到Matlab中的不同数组中
- c++ - 不懂Qt & 和位与操作:if(ev->buttons() & Qt::RightButton)
- javascript - 将二维坐标转换为一维数组
- google-cloud-platform - google.datalab.bigquery 和 google.cloud.bigquery 之间的区别
- php - 使用 Symfony 的 EventDispatcher 触发事件
- algorithm - 如何在多源流网络中找到最大流量?
- haskell - Haskell 为新数据类型创建 map 和 foldr 函数
- atom-editor - Atom 文本编辑器中的代码片段返回错误:意外换行
- html - 如何在 4 列中显示我的自定义 woocommerce 产品?
- dart - Flutter:无法从 Firebase 身份验证中获取错误代码?