Odoo one2many字段值正在写两次

时间:2017-07-03 10:22:17

标签: odoo odoo-10 odoo-9

我所获得的是简单的一对多字段和一个Html字段,这是在更改one2many字段时计算的。

requirements = fields.One2many('cust.req', 'templ_id')
comment = fields.Html(compute='do_smth')

@api.depends('requirements')
def do_smth(self)
    ....

当我填写one2many字段并点击保存时,一切都很好。但在我的表格中,我也有按钮' view'它将一些字段值传递给其他形式并打开它。

 template_comment = self.env['customer.comment.v'].search([('tmpl_id','=',self.id)])
 return {
            'name': _('Customer Req Comments'),
            'type': 'ir.actions.act_window',
            'res_model': 'customer.comment.v',
            'view_type': 'form',
            'view_mode': 'form',
            'view_id': 
            self.env.ref('tmpl_data.magnus_order_tmpl_comment_form').id,
            'target': 'new',
            'res_id': new_comment.id,
        }

所以,让我说我之前已经有一个填充了三行的One2many字段。然后我回到我的表单添加额外的第4行,单击按钮视图打开其他表单,然后关闭该表单并保存父表单,其他第4条记录将被复制。我认为这是因为当我点击随机按钮时查看' write方法被称为one,当我单击save按钮时,再次以相同的值调用write方法。所以最后还要复制其他行。

我的问题是我该如何避免这样的事情发生? 谢谢你的时间!!

1 个答案:

答案 0 :(得分:0)

在同一种方法中,您应该在另一个视图中转到您的班级并使用它们。

这是代码

`x_line = self.env['customer.comment.v']`
`x_delete = x_line.search([('tmpl_id','=',self.id)]).unlink()`

x_delete会删除先前的注册,如果相同的话。