全书完整目录请见:Odoo 12开发者指南(Cookbook)第三版
本章中我们将讲解如下小节:
- 定义模型表现及顺序
- 向模型添加数据字段
- 使用可配置精度的浮点字段
- 向模型添加货币字段
- 向模型添加关联字段
- 向模型添加等级
- 向模型添加约束验证
- 向模型添加计算字段
- 暴露存储在其它模型中的关联字段
- 使用引用字段添加动态关联
- 使用继承向模型添加功能
- 为可复用模型功能使用抽象模型
- 使用代理继承将功能拷贝至另一个模型
引言
本章中的各小节会对已有的那个插件模型做一些小的新增。我们将使用在第四章 创建Odoo插件模块中所创建的模块。
技术准备
要按照本章中的示例进行操作,你应该要有一个第四章 创建Odoo插件模块中所创建的模块并且该模型应可用。
本章中使用的代码可以在GitHub仓库中进行下载,地址为https://github.com/alanhou/odoo12-cookbook/tree/master/Chapter05。
观看如下视频来查看实时代码操作:http://t.cn/E9ZHCPR
定义模型表示及顺序
模型中有结构性属性来定义它们的行为。这是以下划线作为前缀。最重要的属性是_name,因为这定义了内部全局标识符。Odoo通过这一_name属性来创建数据表。例如,如果你使用_name="library.book",那么Odoo ORM会在数据库中创建一张library_book数据表。这也是为什么_name必须在Odoo系统中要保持唯一。
在模型中可以使用另外两个属性:一个设置用于记录展示或标题的字段,另一个设置记录的展现的顺序。
准备工作
这一节中我们假定你已经有一个包含my_library模块的实例,如第四章 创建Odoo插件模块中所描述。
如何操作...
my_library实例应包含一个名为models/library_book.py的Python文件,它定义一个基础模型。我们将编辑该文件来在_name之后添加一个新的类级别的属性:
- 加入如下代码来添加一个用户友好的模型标题:
_description = 'Library Book'
- 首先对记录进行排序(按时间最近排序,然后按标题排序),添加如下代码:
_order = 'date_release desc, name'
- 添加如下代码来使用short_name字段作为记录的表示:
_rec_name = 'short_name'
short_name = fields.Char('Short Title', required=True)
- 在表单视图中添加short_name字段,这样会在该视图中显示这一新字段:
完成如上操作之后,我们library_book.py文件应该是下面这样:
from odoo import models, fields
class LibraryBook(models.Model):
_name = 'library.book'
_description = 'Library Book'
_order = 'date_release desc, name'
_rec_name = 'short_name'
name = fields.Char('Title', required=True)
short_name = fields.Char('Short Title', required=True)
date_release = fields.Date('Release Date')
author_ids = fields.Many2many('res.partner', string='Authors')
你的library_book.xml 文件中的