模型是应用的基本组件,包含了所需使用到的数据结构和存储。接下来我们就为 To-do 项目添加模型,将包含三个字段:
⚫ Description
⚫ Is done? 标记
⚫ Work team 用户列表
如前所述,通过菜单 Settings > Technical > Database Structure > Models 可进入模型创建页面,步骤如下:
1、 进入模型菜单,点击左上角 Create 按钮,在弹出页面填入:
⚫ Model Description: To-do Item
⚫ Model: x_todo_item
在进一步添加字段之前可以先进行保存。
2、 点击 Save 保存然后点击 Edit 再次进入编辑,可以看到 Odoo 自动添加了一些字段,
ORM 在所有模型中添加了这些字段,可用于审计和记录功能。x_name (或 Name)字段是在列表中显示记录或其它记录中引用时显示的标题。在 To-do Item标题中将使用它,还可以对其进行编辑将字段标签改为更能表达含义的描述。基于前面的知识添加
Is Done? 标记此时就显得非常容易了。
3、 在字段列表页底部点击 Add a line 链接创建一个包含如下值的字段:
⚫ Field Name: x_is_done
⚫ Field Label: Is Done?
⚫ Field Type: boolean
接下来添加 Work Team 字段就带有挑战性了,不仅因为这是一个指向 res.partner 对应记录的关联字段,它还是一个包含多个值的 selection 字段。在很多框架中这都会颇为复杂,但所幸我们使用的是 Odoo,因为它支持 many-to-many 关联。任务清单应用属于这一情况, 因为一条任务可以有多个用户,同时一个用户也可以参与多个任务。
4、 再次在字段列表中点击 Add a line,添加一个包含如下值的字段:
⚫ Field Name: x_work_team_ids
⚫ Field Label: Work Team
⚫ Field Type: many2many
⚫ Object Relation: res.partner
⚫ Domain: [(‘x_is_work_team’, ‘=’, True)]
many-to-many 字段有其独有的定义项-Relation Table, Column 1, and Column 2 项,这些值会被自动填充,大多数情况下都无需修改。在第六章模型中将会有更详细的探讨。 Domain 项为非必填项,这里使用到是因为只有符合条件的用户才可被选取加入工作组,如果不加这项则所有用户均可被选取
Domain 表达式中对展示的记录进行了过滤,它遵循 Odoo 独有的语法 – 一个包含三个值的元组(补充:经测试使用列表也同样可以),第一项为待过滤的字段名、第二项为过滤操作符、第三项为过滤作用的值。详细的解释参见第七章 记录集 – 使用模型数据。
“ 小贴士: Odoo 有一个交互式的 domain 过滤向导可帮助生成 domain 表达式。访问Settings > Technical > User Interface > User-defined Filters,点击 Create 选择模型后将会出现 Add filter 按钮,可通过选择字段在下方的文本框中实时生成 domain 表达式。 ”
现在我们已经为 To-do 应用创建好了模型,但还无法使用它,在创建模型后,我们需要配置组来使用该模型。