Odoo 13 - 在 onchange 内更新 One2many 时,整数类型的输入语法无效:“virtual_xxx”

问题描述 投票:0回答:1

我正在尝试更新

onchange
方法中的 One2many 字段。

正如文档所说,我使用的是

update
方法,而不是像
create
这样的标准 CRUD 方法。

我有这段代码:

class HrExpenseSheet(models.Model):
    _inherit = "hr.expense.sheet"


    @api.onchange('employee_id')
    def _update_expense_ids(self):
        
        # define variables ...

        values = {
            'product_id': product_id,
            'name': name,
            'product_uom_id': product_uom_id, 
            'unit_amount': unit_amount, 
            'quantity': quantity, 
            'total_amount': total_amount
        }
            
        self.update({'expense_line_ids':[(0, 0, values)]})

它几乎可以工作了。我将我的记录添加到表中,但之后整个表就中断了......当此代码执行时,会发生一些事情:

  • 我无法保存文档,因为据称需要的
    unit_amount
    未填写 - 显然应该填写
  • 当我尝试编辑该特定行时,我无法编辑该行,因为它会将我带到一个全新的记录,而没有填写我的数据(但数据存在于表格视图中)
  • 我无法添加新行,因为当我单击按钮时出现错误
    psycopg2.errors.InvalidTextRepresentation: invalid input syntax for type integer: "virtual_2509" LINE 1: ...mpany_id" = 1))  AND  (("hr_expense"."id" not in ('virtual_2...

到底发生了什么。我在 8.0 版本上运行相同的代码没有问题,但这在 13.0 版本上不起作用。

python odoo odoo-13
1个回答
0
投票

我有一个非常类似的问题,但这是因为我使用

[(0, None, {'a': 1})
语法在 M2M 字段中“创建”记录。解决了使用
model.create([{'a': 1}])

创建线条的问题
© www.soinside.com 2019 - 2024. All rights reserved.