在 OpenERP6.1 中单击保存按钮(在随附的屏幕截图中标记为红色)时会调用哪个函数?
提前致谢!!!
为了详细说明 DReispt 的答案,您的屏幕截图似乎突出显示了现有记录表单的 One2Many 字段中可编辑One2Many行的保存按钮。One2Many 行被视为其父记录的子记录,因此它们应该与其他记录数据一起以原子方式(在单个 RPC 调用中)保存。
从这个意义上说,屏幕截图上突出显示的保存按钮不会直接调用服务器上的任何方法,它只是将更改保存在浏览器的本地缓存中。真正调用(如果这create
是一条新记录)或write
(如果正在更新记录)只有在您之后单击父记录表单的主保存按钮时才会完成。
此时,该行的值将在提供给create
/的值映射中传递write
,在 One2Many 命令列表中。write
有关设置 One2Many 字段值的更多信息,另请参阅文档。
顺便说一句,在 OpenERP 中调查 RPC 调用非常简单:
openerp-server
进程--log-level=debug_rpc_answer
以获取所有 RPC 调用的详细日志记录注意:以上不是 OpenERP 6.1 特有的,它在 7.0 中的工作方式相同(尽管 6.0 和更早版本的 web 客户端对 one2many 字段有不同的行为)
保存按钮将为该模型运行ORM 方法。对于新记录,这是create()
方法,对于更新记录,它是update()
方法。
这些标准方法可以在模型中被覆盖以实现附加功能。
您的模型是orm.Model'. There are methods in
类 BaseModel save`(BaseModel is inherited by Model) which will be call for the
记录的子类。这些方法是
def create(self, cr, user, vals, context=None)
如果要更改任何模型的任何行为,则必须覆盖此方法。