在OpenERP6.1中单击保存按钮时调用哪个函数

时间:2013-01-07 13:37:14

标签: python openerp

在OpenERP6.1中单击保存按钮(在附加的屏幕截图中标记为红色)时调用了哪个函数?

提前致谢!!! openerp

3 个答案:

答案 0 :(得分:7)

为了详细说明DReispt的答案,您的屏幕截图似乎突出显示了现有记录表单的One2Many字段中可编辑One2Many行的保存按钮。 One2Many行被视为其父记录的子记录,因此它们应该与其他记录数据一起保存,原子地(在单个RPC调用中)。

从这个意义上说,屏幕截图中突出显示的保存按钮直接调用服务器上的任何方法,它只是将更改保存在浏览器的本地缓存中。 真实调用create(如果这是新记录)或write(如果记录正在更新)只会在您点击主之后保存父记录表格的按钮。

此时,该行的值将在One2Many命令列表中提供给create / write的值的映射中传递。有关为One2Many字段设置值的详细信息,另请参阅write的文档。

BTW,调查RPC调用在OpenERP中非常简单:

  • 在服务器端,您可以使用openerp-server参数启动--log-level=debug_rpc_answer进程,以获取所有RPC调用的详细日志记录
  • 在Web客户端,您只需使用Web浏览器的调试器即可观看所有RPC调用(在“网络监视”选项卡中)。大多数JSON-RPC调用对应于常规OpenERP ORM method calls,并且在您熟悉OpenERP RPC API后可以轻松读取。

注意:以上内容并非特定于OpenERP 6.1,它在7.0中的工作方式相同(尽管6.0和早期版本的Web客户端对于one2many字段有不同的行为)

答案 1 :(得分:1)

保存按钮将为该模型运行ORM method。对于新记录,这是create()方法,对于更新的记录,它是update()方法。

可以在模型中覆盖这些标准方法,以实现其他功能。

答案 2 :(得分:0)

您的模型是orm.Model'. There are methods in类BaseModel (BaseModel is inherited by Model) which will be call for the save`记录的子类。这些方法是

def create(self, cr, user, vals, context=None)

如果要更改任何模型的任何行为,则必须覆盖此方法。