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

问题描述

我正在尝试更新 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,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 上不起作用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)