了解Many2one的第一件事,誰是Many誰是One,我們簡單的創建一個Many2one
的fields
:
class BookName(models.Model):
_name = 'book.name'
_description = "book's name model"
name = fields.Char(string='Name', required=True)
book_id = fields.Many2one('category', string='Category', required=True)
從上面的範例中,我們可以看到book_id = fields.Many2one('category',string='Category',required=True
其實很簡單,左邊的book_id
是Many
,右邊的boss
是one
,也就是說多個BookName
中的欄位,關聯一個Category
,其對應就是在Category
的DB Table中id
的欄位。
Many2one
在view當中,它呈現的方式跟fields.Selection()
一樣是下拉選單,不過其屬性會跟所設定的屬性不同,會有不同的呈現。
Many2one
的parameter:
comodel_name
:這是與當前模型建立關係的目標模型的名稱,它是一個字符串,例如 'res.partner',它
表示當前模型的記錄將與 'res.partner' 模型的記錄建立關聯。
string
:這是字段的可選標籤,通常是一個人類可讀的字符串,用於界面上顯示字段的標籤。
required
:一個布爾值,指定字段是否為必填字段。如果設置為True
,用戶必須為這個字段提供值。
readonly
:一個布爾值,指定字段是否為只讀字段。如果設置為True
,則該字段將只能查看,不能編輯。
ondelete
:指定當目標記錄被刪除時,如何處理關聯的記錄。常見的值包括 set null
(將關聯字段設置為空) 和 cascade
(刪除關聯的記錄)。
domain
:一個選擇器函數或域列表,用於篩選可選擇的目標記錄。
context
:一個字典,用於設置與這個字段相關的上下文,可以在計算字段值時使用。
help
:一個字符串,用於提供有關字段用途的說明。
index
:一個布爾值,指定是否在該字段上建立數據庫索引。通常在大型數據集上查詢這個字段時使用。
delegate
:一個布爾值,指定是否在目標模型中尋找其他字段的參考。這在多個Many2one
字段引用相同模型時很
有用。
其實也可以這樣去想,書本會有很多本,但是對應的種類只有一個,這就是Many2one
。