Odoo Scaffold 利用脚手架 - Models

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

发布了27 篇原创文章 · 获赞 1 · 访问量 987

猜你喜欢

转载自blog.csdn.net/jason156/article/details/103434449