2017-03-16 79 views
0

我是使用odoo的新手,所以我遇到了創建方法的重寫,但仍不太瞭解這個概念。 這是創建方法我用:創建方法odoo8的概念

@api.model 
def create(self, vals): 
    vals['task_idd'] = self.env['crane.task'].create({'equipment_id': vals['equipment_id'], 'type': vals['type']}).id 
    vals['task_ids'] = [(4, vals['task_idd'])] 
    return super(crane_workorder, self).create(vals) 

此代碼的工作完全 我有已經轉化爲one2one(邏輯)一one2many關係,所以我重寫create方法,直到我可以從兩個創建兩個記錄不同類別... PS1:equipment_id &類型爲必填字段,但我不明白它是如何工作...

+0

問題是通用的,難道你不明白?它將值作爲參數,它是一個字典,其中鍵爲字段的名稱和值,值爲關係字段的特殊處理 – dccdany

回答

1

如果你的意思是如何包含一個元組[(4, vals['task_idd'])]列表中得到期望的結果這是我的理解。

當Odoo創建或寫入一個關係字段的記錄時,Odoo使用的命令語法是您在代碼中使用的結構。基本上,從任何特定記錄的角度來編寫或創建相關字段時,Odoo會嘗試通過創建一系列特定命令來消除歧義,以便在這些情況下使用。

例如,如果您需要寫入One2many字段,Odoo應該如何知道您是將一條新記錄添加到許多其他記錄的列表,還是您說相關記錄的列表是這條新記錄已在您的代碼中引用。

所以想象一下,你有一棵蘋果與One2many的關係。如果你正在寫數據庫來記錄另一個蘋果樹,你是說這個蘋果將被添加到現有的蘋果列表中,或者它正在替換現有的列表,並且應該被認爲是屬於該樹的唯一的蘋果。

所以Odoo使用這個元組結構,並有一個解析元組並確定如何處理它的值以及寫入數據庫的過程。

以下是Odoo在此問題上提供的文檔屏幕截圖。這裏是鏈接到page

Odoo Documentation on Relation Fields

+0

這正是我一直在尋找的!我已將其應用於其他模型,並且完美地工作,非常感謝。 –