当我需要使用 write 更新许多记录时遇到问题,例如:self.sudo()。write({'field':True}) 在这种情况下,我花了10到15分钟才能完成此操作。但是,当我尝试使用sql查询时,我花了几秒钟。 我的疑问是,为什么会发生这种情况?为什么最好使用其中一个?还是在哪种情况下应该使用其中一个?
答案 0 :(得分:3)
因为写入中发生了很多事情,而不仅仅是执行查询。例如:
检查模型访问权限。
检查记录规则是否具有访问权限,这是最沉重的一步。
计算依赖于此更新的其他值(如果存在)。
发布mail.thread消息。
以某种方式使用api.one,odoo将为每个记录重复相同的步骤并执行N次查询(这非常不好)
请记住,使用普通SQL不会触发计算值或安全检查,因此请不要使用它或小心使用它。