Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x one2many字段在填充时仅存储最后一条记录_Python 3.x_Odoo 12 - Fatal编程技术网

Python 3.x one2many字段在填充时仅存储最后一条记录

Python 3.x one2many字段在填充时仅存储最后一条记录,python-3.x,odoo-12,Python 3.x,Odoo 12,请帮助我了解odoo12中的任何字段。 首先,抱歉语法不好 我正在从account.invoice model的invoice\u line\u id获取产品。 但当我在自定义模型中存储这些产品时,只有最后一条记录存储在类中的one2many字段中。 这是我的密码 invoice_report = self.create(vals) product_dict={} product_list=[] for line in ids.invoice_line_ids: product_dic

请帮助我了解odoo12中的任何字段。 首先,抱歉语法不好

我正在从account.invoice model的invoice\u line\u id获取产品。 但当我在自定义模型中存储这些产品时,只有最后一条记录存储在类中的one2many字段中。 这是我的密码

invoice_report = self.create(vals)
product_dict={}
product_list=[]

for line in ids.invoice_line_ids:
    product_dict.update({
        'product_name':line.product_id.name,
        'qty':line.quantity,
        'unit_price':line.price_unit,
        'tax':line.invoice_line_tax_ids.name or "",
        'subtotal':line.price_subtotal
    })

    product_list.append([(1,invoice_report.id,product_dict)])

for data in product_list:
    invoice_report.write({
        'inv_products':data
    })
inv_products是我在众多领域中的一员 发票报告是我最近创建的记录。i、 e custom.invoice(1,)

根据,您使用的格式将id
id
的现有记录更新为
values
中的值<代码>id应该是
库存产品
记录的id,而不是
自定义发票
记录

如果数据库中不存在id等于
1
的案例记录,则应收到Odoo服务器错误:

One of the records you are trying to modify has already been deleted (Document type: custom.report.line).

(Records: (1,), User: 2) 
您在for循环外部声明了
product\u dict
,并在内部使用了
update
,在循环结束时,您将重复
invoice\u line\u id
的最后一行的值,您要求系统更新特定行(id为invoice\u report.id)调用
write
方法时,在每次迭代中使用相同的值

要将新记录添加到
库存产品
,请使用
[(0,0,值)]
格式:

invoice_report = self.create(vals)
product_list = []

for line in ids.invoice_line_ids:
    product_dict = {

    }

    product_list.append((0, 0, product_dict))

invoice_report.write({
    'inv_products': product_list
})

非常感谢,它成功了。很抱歉,我不能投票给你的答案,因为少于15个。