Odoo的ORM模型 在定義模型時常用的三個模塊:
models
包含 Model 基礎類,用於定義 ORM 模型.
fields
包含模型定義時使用的基礎字段,例如 fields.Char、fields.Integer 和 fields.Boolean 等等
api
包含了數據庫環境 Environment 類和一些常用的模型函數裝飾器例如 api.multi、api.one 和 api.model 等等
所以需要現在文件頭部引入這三個模: from odoo import models, fields, api 然後開始定義第一個模型。
# -*- coding: utf-8 -*-
from odoo import models, fields, api
# class todo(models.Model):
# _name = 'todo.todo'
# _description = 'Todo List'
# name = fields.Char(string='Name', required=True, default=0)
# value = fields.Integer()
# value2 = fields.Float(compute="_value_pc", store=True)
# description = fields.Text()
#
# @api.depends('value')
# def _value_pc(self):
# self.value2 = float(self.value) / 100
模型類的類屬性定義了_name是這個模型類的名稱.
定義 _name 是要遵守一個不成文的規定,格式一般爲 {addon_name}.{model_name} 其中 addon_name 爲你的應用或模塊的名字,model_name 爲模型的名字,例如: project 模塊中的 Project 模型的 _name 爲 project.project,hr 模塊中 LeaveReport 則爲 hr.leave.report,以上均參考至官方應用中的模型.
_description屬性定義了這個模型類的描述.
模型新建了一個名字爲todo.todo的表格.
name = fields.Char(string='Name', required=True, default=0) 相當於在todo.todo這個表格中創建了一個"名字爲name"類型爲Char的字段. 是必須的. 默認值爲0. 注意默認值只有在ORM環境下有效的. 單獨吸入sql是無效的.
定義好模型後我們需要在 models/__init__.py
引入這個類或這個類所在的 py 文件