~...py
@api.onchange('test_record')
def abcde(self):
rec = self.test_record.id
res = self.env['anc'].browse(rec)
res.write({'partner_id': (4,self.partner_id.id)})
在上面的代码中,我试图做的是更新浏览模型(res)中的合作伙伴,但是名为partner_id的字段是一个many2many字段,我们可以在其中选择多个合作伙伴。
请注意,这仅适用于
many2many
或one2many
,如下所示:
(0, 0, { values }) link to a new record that needs to be created with the given values dictionary
(1, ID, { values }) update the linked record with id = ID (write *values* on it)
(2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
(3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself)
(4, ID) link to existing record with id = ID (adds a relationship)
(5,) unlink all (like using (3,ID) for all linked records). Needs to be a tuple, thus the comma.
(6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)
但就你而言,可能是
many2one
,应该是
def abcde(self):
rec = self.test_record.id
res = self.env['anc'].browse(rec)
res.write({'partner_id':[(4,self.partner_id.id)]}) # you need to add it as list
从 Odoo 16.0 开始,您可以使用
Command
。更多详情:
Command.create({ values })
Command.update(id, { values })
Command.delete(id)
Command.unlink(id)
Command.link(id)
Command.clear()
Command.set(id)
使用它们的一个例子是:
from odoo import Command
invoice_line_ids = [
Command.create({'product_id': 200, 'quantity': 5}),
Command.create({'product_id': 300, 'quantity': 5}),
]
# Combining update & create
line_ids = [
Command.update(line_ids[0].id, {'balance': 300}),
Command.update(line_ids[1].id, {'credit': 200}),
Command.create({
'balance': -100,
'account_id': 4,
})
]
move_finished_ids = [
Command.delete(move.id) for move in production.move_finished_ids if move.bom_line_id
]
user_ids = [
Command.unlink(user.id) for user in removed_users if user.is_doctor
]
user_ids = [Command.link(user.id) for user in allowed_users]
user_ids = [Command.clear()]
user_ids = [Command.set(allowed_users.ids)]