????????在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])]