Odoo中将值传递到one2many、many2many字段的子级

发布时间:2024年01月21日

????????在Odoo中创建记录时,我们可以使用命令将值传递给它的One2Many或Many2Many子级,每个命令都是一个三元素元组tuple,其中第一个元素是标识该命令的一个整数。第二个元素是应用命令的相关记录id,第三个元素是要写入记录的值。

????????命令中的第一个整数元素表示不同的方法:0表示创建,1表示更新,2表示删除,3表示取消链接,4表示链接,5表示清除,6表示集合。

0、创建实例create

invoice = self.env[‘account.move'].create({
'move_type': 'out_invoice',
'invoice_date': datetime.now(),
'invoice_line_ids': (0, 0, {
    'product_id': self.product_id,
    'price_unit': self.price_unit,
    }) ],
})

1、更新实例update

payment.move_id.write({
'line_ids': [
    (1, counterpart_lines.id, {
    'debit' : 0.0,
    'credit ' : 75.0,
    'amount_currency': -75.0,
    'partner_id': self.partner_b.id,
    }
    ),

2、删除实例delete

def test_with_unlink(self):
    country2 = self.env['res.country'].create({'name': 'other country'})
    company = self.env['res.company'].create({
        'name': 'test company',
        'child_ids': [
        (0, 0, {'name': 'Child Company 1'}),
        (0, 0, {'name': 'Child Company 2'}),
            ]
        })
    child_company = company.child_ids[0]
    company.write({
        'country_id': country2.id,
        'child_ids': [(2, child_company.id)],
    })

3、取消链接unlink

(3, ID, 0) 移除两个对象之间的关系。?

def action_quit(self):
    self.ensure_one()
    return self.write({'user_ids': [(3, self._uid)]})

4、链接link

?(4, ID, 0) 在关联记录与已存在记录之间通过ID增添一个关系。操作会删除两个对象现有的关系,但不会删除目标对象。

def action_confirm(self):
    account_move_data = self.env['account.move'].search(
        [('id', '=', self.invoice_id.id)])
    account_move_data.write({
        'name': self.invoice_id.name,
        'warranty_request_ids': [(4, self.id, {
            })]
        })

5、清除

清除已存在记录。

def onchange_sale_order(self):
    self.update({
        'invoice_line_ids': [(5, 0, 0)],
        'line_ids': [(5, 0, 0)],
    })

6、Set设置

?????????(6, 0, [IDs]) 将当前关系记录替换为IDs所指, 此操作可以视为unlink与link的步骤合成,先unlink取消之前链接,再link新的链接。

def _default_user_ids(self):
    return [(6, 0, [self._uid])]

文章来源:https://blog.csdn.net/excelserver/article/details/135732247
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。