iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Odoo

Odoo 16 入門介紹系列 第 6

odoo Model的介紹

  • 分享至 

  • xImage
  •  

甚麼是 Model:

Odoo 的 model 有自己的一套 ORM 操作 PostgeSQL 的方法,Model定義好後、Odoo會更新db內的table資料或新增,一個 model 裡面基本含有 名稱、繼承、參數、計算跟約束。

Model 的種類和使用 :

+ Model : 最常使用的類型,在安裝 addons 時,會對應 Model 產生表和欄位,一般沒有特殊需求就會宣告成這       種類型
+ Base Model  : MetaModel 的子類,是 Abstract Model 跟 Transient Model 和 Model 的父類。
+ Transient Model : 產生資料作為臨時資料使用(臨時資料),且一段時間後 Odoo 會自動清除,一般用來建立       wizard
+ MetaModel : 主要作用是註冊每個模塊中的模型
+ Abstract Model : 最原本的 BaseModel ,不會新增及儲存資料,透過繼承其他 Model  來新增功能。

(今天先介紹第一種,也是最基本的Model)

範例:

from odoo import models, fields

class Employee(models.Model):
    _name = 'res.employee'
    _description = 'Employee Information'
    _order = 'birthday'

    name = fields.Char(string='Name', required=True)
    birthday = fields.Date(string='Birthday')
    email = fields.Char(string='Email')
    parent_id = fields.Many2one('res.partner', string='Parent')
    address = fields.Text(string='Address')

    _sql_constraints = [
        ('unique_email', 'unique(email)', 'Email must be unique')
    ]

Model 屬性 :

  + _name : 模型的名稱,同時也會用來建立對應的資料表。名稱中使用點(.)分隔不同的部分,例如                        res.student 將建立一個名為「res_student」的資料表。若名稱為空,則會在繼承的原始資料表中                添加欄位。
  + _inherit : 此參數表示要繼承的模型名稱,例如你提到的範例是繼承了 res_partner 模型。
  + _inherits : 使用特定的欄位來繼承原始資料表,通常是透過 id 欄位來參考回原始表。
  + _description : 對模型的描述,可以用來提供有關此模型的簡短說明。
  + _table : 此模型所產生的資料表的名稱,通常情況下不需要額外設定,系統會自動根據 _name 來生成對應                  的資料表名稱。
  + _order : 指定用於排序的欄位,例如填入 birthday 時,在查看資料時會按照學生的生日進行排序。若未指                  定,預設會按照 id 進行排序。
  + _sql_constraints : 指定 SQL 約束 [( name , 約束 , 訊息 )]
  + _rec_name : 標籤名稱
  + _parent_name : 父級自段 Many2one  自段用作為父自段
  + _parent_store : 是否儲存父級路徑

明天繼續介紹 Model Field 類型 跟 Field 常用參數


上一篇
__manifest__.py 是甚麼
下一篇
Model Field 類型
系列文
Odoo 16 入門介紹30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言