写给One2many Field odoo 8的价值

时间:2018-05-16 08:54:31

标签: odoo

我正在尝试在one2many字段中写入值。我正在使用Odoo v8。我有一个带有one2many字段的向导。一个按钮关联,单击按钮我使用write方法将值添加到one2many字段。我正在调用按钮功能,但它关闭向导而不做任何事情。我没有得到任何错误或异常。

我的XML代码如下:

<button name="split_qty" type="object" string="Split" class="oe_highlight"/>

我的python代码如下:

for i in range(1,11):
            self.write({'item_ids':[(0, 0, {'product_id':pID,'quantity ':1, 'sourceloc_id':sID,'destinationloc_id':dID})]}) 

任何有关此方面的帮助或指导都会有所帮助。感谢

1 个答案:

答案 0 :(得分:0)

您提到您正在使用向导,而使用self.write则意味着您正在更改向导数据而不是主要模型。我想这是问题所在。 您应该改用self.env[target model].write

此外,在循环中调用write方法也不是一个好习惯,而是使用以下方法:

recs=[]
for i in range(1,11):
    recs.append((0, 0,{'product_id':pID,'quantity':1,'sourceloc_id':sID,'destinationloc_id':dID})]}) 
self.env['your.model'].write({'item_ids':recs)

或更短的类似python的版本:

self.env['your.model'].write({'item_ids':[(0, 0,{'product_id':pID,'quantity':1,'sourceloc_id':sID,'destinationloc_id':dID}) for i in range(1,11)])

p.s。您没有使用过i,这是故意的吗?如果是这样,代码可以更短,更好:

self.env['your.model'].write({'item_ids':[(0, 0,{'product_id':pID,'quantity':1,'sourceloc_id':sID,'destinationloc_id':dID})]*11)