iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Odoo

Odoo開發系列 第 4

[Day 4] odoo14 - 建立基本model及欄位(一)

  • 分享至 

  • xImage
  •  

昨天教大家建立起模組後,接下來就要來教大家如何建立model以及欄位。
下面為範例:

from odoo import api, fields, models, _
from odoo.http import request


class IDXRepair(models.Model):
    _name = 'idx.repair'
    _description = '報修單'
    _inherit = ['mail.thread', 'mail.activity.mixin']

    name = fields.Char(string='單號')
    repair_date = fields.Date(string='報修日期')
    open_date = fields.Date(string='處理日期')
    state = fields.Selection([
        ('draft', '未處理'),
        ('quote', '報價'),
        ('open', '處理中'),
        ('verifiy_done', '驗收'),
        ('done', '結案'),
        ('cancel', '作廢')
    ], string='狀態', default='draft')
    reason = fields.Selection([
        ('regular', '定期保養'),
        ('vacuity', '真空不良'),
        ('jammed', '卡死')
    ], string='報修原因', default='regular')
    urgent = fields.Boolean(string='緊急案件', default=False)
    total_amount = fields.Integer(string='總金額')

今天帶大家建立的是odoo中最常見的models.model,會產生相對應的資料表及欄位,且資料會永久保存。
model還有許多種類,後面帶大家建立其他種類的model時會再一一介紹。

model中可以設定的參數:

_name: 定義model的名稱。
_description:用來定義對model的簡單描述,讓使用者可以理解model的用途。
_inherit:用來繼承現有的model,可以修改原有的欄位或function,也可以此為基礎,新加上功能。
_rec_name:畫面上顯示的欄位名稱。
_order: 用來定義資料的順序,如果沒有特別指定則用id排序。
_sql_constraints: 使用SQL對資料進行約束,可以用來約束某些欄位的唯一性。

定義完model後,就可以來新增需要的欄位了
odoo中有許多欄位的屬性可以使用,下面先列出一部份的屬性供大家參考:

  • fields.Char:基本的字串型態,可以使用參數(size)限制長度,在畫面上顯示為單行的字串。
  • fields.Text:可以儲存較長的字段,像是訂單的備註等欄位,在畫面上顯示為多行的文字方塊。
  • fields.Integer:用來儲存整數資料,像是數量、天數等欄位。
  • fields.Float:用來儲存浮點數的資料,像是金額等欄位,可以使用參數(digits)限制小數點位數。
  • fields.Boolean:用來儲存布林值,例如是/否、啟用/停用等欄位。
  • fields.Date:用來儲存日期,像是生日、休假開始日期等欄位。
  • fields.Datetime:用來儲存日期與時間,像是資料建立日期等欄位。
  • fields.Selection 用來創建一個下拉選單的欄位,須先建立選項供使用者選擇,使用者無法自行新增選項。

關於欄位屬性的介紹,還有許多種用法以及各種參數可以使用,讓我們等到明天再來繼續跟大家說明。


上一篇
[Day 3] odoo14 - __manifest__.py介紹
下一篇
[Day 5] odoo14 - 建立基本model及欄位(二)
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言