Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在OpenERP6.1中单击保存按钮时调用哪个函数_Python_Openerp - Fatal编程技术网

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

Python 在OpenERP6.1中单击保存按钮时调用哪个函数,python,openerp,Python,Openerp,在OpenERP6.1中单击“保存”按钮(在所附屏幕截图中标记为红色)时,会调用哪个函数 提前感谢 保存按钮将为该模型运行一个。对于新记录,这是create()方法,对于更新的记录,这是update()方法 可以在模型中覆盖这些标准方法,以实现附加功能。为了详细说明DReispt的答案,您的屏幕截图似乎突出显示了现有记录表单的One2Many字段中可编辑行的save按钮。One2Many行被视为其父记录的子记录,因此它们应该与其余记录数据一起原子地保存(在单个RPC调用中) 从这个意义上讲,屏幕

在OpenERP6.1中单击“保存”按钮(在所附屏幕截图中标记为红色)时,会调用哪个函数


提前感谢

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


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

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

从这个意义上讲,屏幕截图上突出显示的保存按钮不会直接调用服务器上的任何方法,它只是将更改保存在浏览器的本地缓存中。只有在以后单击父记录窗体的主保存按钮时,才能调用real创建
(如果这是新记录)或
写入
(如果记录正在更新)

此时,该行的值将在提供给/的值映射中传递,在One2Many命令列表中。有关设置One2Many字段值的更多信息,请参见的文档

顺便说一句,在OpenERP中调查RPC调用非常简单:

  • 在服务器端,您可以使用
    --log level=debug\u rpc\u answer
    参数启动
    openerpserver
    进程,以获取所有rpc调用的详细日志记录
  • 在web客户端,您可以简单地使用web浏览器的调试器监视所有RPC调用(在“网络监视”选项卡中)。大多数JSON-RPC调用与常规OpenERP相对应,一旦熟悉OpenERP RPC API,就很容易阅读

注意:上述内容并非OpenERP 6.1所特有,它在7.0中的工作原理与之相同(尽管6.0和早期版本的web客户端对one2many字段有不同的行为)

您的模型是
orm.model'的子类。在
类BaseModel
(BaseModel由Model继承)中有一些方法,这些方法将被调用用于
save`记录。这些方法是

def create(self, cr, user, vals, context=None)
如果要更改任何模型的任何行为,则必须重写此方法