首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在将值写入One2many字段odoo 8

正在将值写入One2many字段odoo 8
EN

Stack Overflow用户
提问于 2018-05-16 16:54:31
回答 1查看 1.2K关注 0票数 1

我正在尝试在one2many字段中写入值。我正在使用Odoo v8。我有一个带有one2many字段的向导。关联了一个按钮,在单击该按钮时,我正在使用write方法将值添加到one2many field.My按钮函数被调用,但它关闭向导而不执行任何操作。我没有收到任何错误或异常。

我的XML代码是这样的:

代码语言:javascript
运行
复制
<button name="split_qty" type="object" string="Split" class="oe_highlight"/>

我的python代码是这样的:

代码语言:javascript
运行
复制
for i in range(1,11):
            self.write({'item_ids':[(0, 0, {'product_id':pID,'quantity ':1, 'sourceloc_id':sID,'destinationloc_id':dID})]}) 

在这方面的任何帮助或指导都将是有帮助的。谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-01-28 17:18:40

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

此外,在循环中调用write方法也不是一种好的做法,而是使用以下代码:

代码语言:javascript
运行
复制
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的版本:

代码语言:javascript
运行
复制
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)])

附注:您没有使用过i,是不是故意的?如果是这样的话,代码可以更短更好:

代码语言:javascript
运行
复制
self.env['your.model'].write({'item_ids':[(0, 0,{'product_id':pID,'quantity':1,'sourceloc_id':sID,'destinationloc_id':dID})]*11)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50366403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档