创建模型
模型是 Odoo 框架的核心,它们描述应用的数据结构,是应用服务和数据库存储之间的桥梁。可围绕模型实现业务逻辑来为应用添加功能,用户界面也建立在模型之上。下面我们将学习模型的
通用属性,用于影响行为,以及几种模型类型:普通(regular)、临时(transient)和抽象(abstract)类型。
模型属性
模型类可以使用控制其部分行为的额外属性,以下是最常用的属性:
⚫ _name 是我们创建的 Odoo 模型的内部标识符,在创建新模型时为必填。
⚫ _description 是对用户友好的模块记录标题,在用户界面中查看模型时显示。可选但推荐添
加。
⚫ _order 设置浏览模型记录时或列表视图的默认排序。其值为 SQL 语句中 order by 使用的字符串,所以可以传入符合 SQL 语法的任意值,它有智能模式并支持可翻译及 manyto-one 字段名。
我们的图书模型中已使用了_name 和_description 属性,可以添加一个_order 属性来默认以图书名排序,然后按出版日期倒序排(新出版在前)。
class Book(models.Model):
_name = 'library.book'
_description = 'Book'
_order = 'name, date_published desc'
在高级用例中还会用到如下属性:
⚫ _rec_name 在从关联字段(如 many-to-one 关联)中引用时作为记录描述。默认使用模型
中常用的 name 字段,但可以指定任意其它字段。
⚫ _table 是模型对应的数据表名。默认表名由 ORM 通过替换模块名中的点为下划线来自动
定义,但是可通过该属性指定表名。
⚫ _log_access=False 用于设置不自动创建审计追踪字段: create_uid, create_date,
write_uid 和 write_date。
⚫ _auto=False 用于设置不自动创建模型对应的数据表。如有需要,可通过重载 init()方法来
创建数据库对象:数据表或视图。
还有用于继承模块的_inherit 和_inherits 属性,在本文后续会深入学习。