11 Odoo模型层详解
经过前面的介绍,我们也确实感觉到Odoo的ORM层的API应该是Odoo技术框架最核心的部分,如果我们翻翻Odoo框架的源码,也会看到models.py那个文件有六七千行的代码,这也说明Odoo的设计者在编写ORM这块是花费了很多精力的。所以我想我们把Odoo的ORM层的API这部分知识掌握了,Odoo框架的神秘面纱也基本上被掀开一大半了。本章将在前面讨论的基础上进一步详细介绍Odoo ORM API的细节。
11.1 _name
定义了本模型具体对应SQL表格的名字,比如前面定义的 mymodule.fruits 对应的数据库中的表格名是 public.mymodule_fruits 。
11.2 各个表头属性
class Fruits(models.Model):
_name = 'mymodule.fruits'
name = fields.Char()
如上所示这样定义的类的一个 name 属性就对应SQL中的一个表头名,即名叫 name 的一列。这个我们在前面的pgadmin3中看到了的。
然后上面的 fields.Char() 具体定义了一个字符串输入字段,类似的还有 fields.Boolean 布尔值; fields.Integer 整数值; fields.Float 浮点数值; fields.Text 和Char类似,但通常用于多行文本字段输入; fields.Selection 几个值的选择; fields.Html ; fields.Date ; fields.Datetime 等。这些都是所谓的简单字段输入,此外还有一种关系字段,其是用于描述表格之间的关系的(相同模型或者不同模型)。
fields.Char() 函数可以接受一些可选参数,比如 string 表示本模型为用户可见的名字;required 接受一个布尔值,默认是False,如果是True,则该字段不可为空值,其要某有个默认值要某有个设定值; help 在用户UI界面下的帮助信息; index 布尔值,默认是False,如果为True则要求在数据库中为这列创建一个索引(index)。
然后我们在pgadmin3前面的介绍中也看到了,此外还有创建一些其他的表头字段:
- id 在表格中一条记录的独特id
- create_date 创建日期
- create_uid 谁创建的
- write_date 最后修改日期
- write_uid 谁修改的
11.3 name字段
Odoo中的模型一般都还需要 name 字段,用于各种搜索或显示行为。
11.4 具体模型的数据
具体模型的数据是用XML文件来声明的,如下所示:
<openerp>
<data>
<record id="apple" model="mymodule.fruits">
<field name="name">apple</field>
</record>
</data>
</openerp>
这里的 record 元素你可以理解为SQL表格的一条记录,或者Odoo模型具体的一个实例一个对象。然后 id 属性特别标记了这条记录(说可被外调用,具体还不清楚); model 属性就是这个对象具体对应那个模型。
然后里面的 field 元素你可以看作某条记录具体的某个 name 表头的字段, field body 里面就放着这个字段的值。
这里的record在视图中对应的是basic view;此外还有 tree 对应的是列表视图;此外还有 form 对应的是表单视图。
11.5 模型间的关系
Many2one
One2many
Many2many
11.6 工作流
一个工作流模型 在Session模型上都加入了state 字段 : 有三种字段, Draft Confirmed Done
有效的转变有:
Draft → Confirmed Confirmed → Draft Confirmed → Done Done → Draft
12 Odoo视图层详解
最后
以上就是美满冬日最近收集整理的关于Odoo 8.0深入浅出开发教程(九) Odoo模型层详解的全部内容,更多相关Odoo内容请搜索靠谱客的其他文章。
发表评论 取消回复