2013-01-07 57 views

回答

7

爲了詳細解釋DReispt的答案,您的屏幕截圖似乎突出顯示了現有記錄表單的One2Many字段中可編輯的One2Many行的保存按鈕。 One2許多行被視爲其父記錄的子記錄,所以它們應該與其餘的記錄數據一起以原子方式(在單個RPC調用中)保存。

在這個意義上,保存按鈕高亮顯示您的截圖確實直接調用服務器上的任何方法,它只是保存在瀏覽器中的一個本地緩存的變化。 real調用create(如果這是新記錄)或write(如果記錄正在更新)將僅在您點擊父記錄表單的主要保存按鈕之後纔會完成。

此時,該行的值將在提供給create/write的值映射中傳遞,在One2Many命令的列表中。有關爲One2Many字段設置值的更多信息,另請參閱write的文檔。

BTW,調查RPC調用是很瑣碎的OpenERP:

  • 在服務器端,您可以用--log-level=debug_rpc_answer參數啓動openerp-server過程中得到的所有RPC的詳細記錄來電
  • 在Web客戶端,您可以簡單地使用Web瀏覽器的調試器來觀察所有的RPC調用(在網絡監控標籤中)。大多數JSON-RPC調用對應的OpenERP定期ORM method calls,且易讀的,一旦你熟悉的OpenERP RPC API。

注:以上是不特定的OpenERP 6.1,它只是在7.0相同的(雖然6.0和更早版本的Web客戶端已經爲one2many場不同的行爲)

1

保存按鈕將運行該模式的ORM method。對於新記錄,這就是create()方法,用於更新的記錄它的update()方法。

這些標準的方法可以在一個模型,以便實施附加的特徵被覆蓋。

0

您的模型的子類orm.Model'. There are methods in class BaseModel (BaseModel is inherited by Model) which will be call for the保存記錄。這些方法是

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

如果你想改變任何模型的任何行爲,那麼你必須重寫此方法。