如何将两个值作为字符串连接到odoo Char字段中?

2024-10-04 01:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从另一个模型中获取字段,然后对它们执行一些操作,逻辑上没有问题,但是当方法运行时,我得到了这个错误

psycopg2.DataError: invalid input syntax for type double precision: "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

那么,如何显示数学运算的值及其旁边的计量单位名称呢 提前谢谢


Tags: name模型selfidtruegettypeavailable
1条回答
网友
1楼 · 发布于 2024-10-04 01:24:40

错误表明数据库中的列定义为双精度。您确定重新启动了Odoo并更新了模块吗

在你的计算方法中有一些常见的错误。首先,我不能经常重复它:试着坚持Odoo命名准则,并将其命名为compute_uom_qty。第二,如果没有特殊的装饰器,一个计算方法可以并且将被多个记录调用,所以循环该记录。第三:搜索uom.uom,这也可能导致多个记录。因此,要么将搜索限制在一条记录上,要么/并执行检查是否找到了某些内容uoms.name可能会导致单音错误。最后:您不必在计算方法中返回任何内容

@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)

相关问题 更多 >