我创建了一个onchange函数,它将一些对象行链接到当前的
mo_lines_g1 = fields.One2many(comodel_name='object.order', inverse_name='mo_id1', copy=False )
@api.onchange('date')
def change_date(self):
if self.date:
g1=self.env['object.order'].search(['&'('date_order','>=',self.date),('date_order','<=',self.date)])
self.mo_lines_g1 = [(6,0, g1.ids )]
这里一切正常,但是当我保存视图时,Odoo尝试删除object.order
中的链接行
所以我试着看看写的函数发送了什么我发现它发送了旧的记录:
vals[ 'mo_lines_g1'] = [[2, 61, False], [2, 62, False], [2, 63, False]]
通常必须是:vals['mo_lines_g1']=[] # or [(6,0,[])]
任何想法?
答案 0 :(得分:0)
关于写入相关字段ORM Documentation的文档说明了(2,_,ids)作为一种无法在创建中使用的方法。如果您正在写作,您可以执行以下操作。
如果覆盖write()函数,你可能会进行一些登录以及(取决于Odoo行为的原因)强制记录以你希望的方式编写。
@api.multi
def write(self, vals):
_logger = logging.getLogger(__name__)
_logger.info("PREPARING TO WRITE RECORD")
_logger.info("WRITING VALS: " + str(vals))
return super(Schedule, self).write(vals)
答案 1 :(得分:0)
(6, _, ids)
不能与One2many字段一起使用。
答案 2 :(得分:0)
我认为v8上存在一个错误,它不能自动工作 我在写功能
上用(2,id,_)
替换了val中的(3,id,_)
@api.multi
def write(self, vals):
if vals.has_key('mo_lines_g1'):
g1=[]
for line in vals['mo_lines_g1']:
if line[0] == 2:
line[0]=3
g1.append(line)
return super(object_order, self).write( vals)