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 文件