1. 程式人生 > >odoo one2many mny2mny 欄位設定預設值

odoo one2many mny2mny 欄位設定預設值

我們經常會遇到這樣的需求,在建立的時候 給 明細行(one2many)設定預設值。

我們先來看看操作這兩個欄位的方法

many2many

(0,0,{values}) 根據values裡面的資訊新建一個記錄。

(1,ID,{values})更新id=ID的記錄(寫入values裡面的資料)

(2,ID) 刪除id=ID的資料(呼叫unlink方法,刪除資料以及整個主從資料鏈接關係)

(3,ID) 切斷主從資料的連結關係但是不刪除這個資料

(4,ID) 為id=ID的資料新增主從連結關係。

(5) 刪除所有的從資料的連結關係就是向所有的從資料呼叫(3,ID)

(6,0,[IDs]) 用IDs裡面的記錄替換原來的記錄(就是先執行(5)再執行迴圈IDs執行(4,ID))

例子[(6, 0, [8, 5, 6, 4])] 設定 many2many to ids [8, 5, 6, 4]

one2many

(0, 0,{ values })根據values裡面的資訊新建一個記錄。

(1,ID,{values}) 更新id=ID的記錄(對id=ID的執行write 寫入values裡面的資料)

(2,ID) 刪除id=ID的資料(呼叫unlink方法,刪除資料以及整個主從資料鏈接關係)

從上面得知

 (0, 0,{ values })根據values裡面的資訊新建一個記錄。

這種寫法可以新建一條記錄

那麼我們在定義欄位的時候就可以設定預設值了 寫法如下

	#單個賦值
	_default_line_ids=[ (0, 0,{ values })]
	
	#多個賦值
	_default_line_ids=[ 
		(0, 0,{ values }),
		 (0, 0,{ values }),
		  (0, 0,{ values })
	]
	
   line_ids = fields.One2many('XXX', 'XX_id', default=_default_line_ids)

這樣我們在建立的時候 明明就會有預設值了

照著上面的方法 完全就可以寫出怎麼給Many2many賦預設值了。這裡就不再介紹。