Odoo开发教程3-为表单视图添加字段
我们已经为 partner 模型创建了新字段,但对用户仍不可见,要实现这点我们还要在相应的视图中进行添加操作。再回到前述的 res.partner 模型详情页,点击 Views 标签,我们就可以看到模块的各个 view 定义。正如所见,每个视图都是一条数据库记录,修改或添加视图记录即时生效,在下一次加载视图时即可见:
视图列表中有一些需要注意的事项,我们看到有不同的视图类型(View Type),如表单视图(Form)、树状列表视图(Tree)、搜索视图(Search)和看板视图(Kanban)。搜索视图指的是右上角搜索框中的过滤选项。其它视图的数据展示方法也各不相同,基本的类型有列表视图和表单视图(用于查看详细信息)。
“ 小贴士:树状视图(Tree) 和 列表视图(List) 实为同一视图,实际上 Odoo 中的为列表视图,树状视图的名称是由历史原因产生的 – 过去列表视图是以树状层级结构来进行展示的。”
可以看到同一视图类型存在多个定义,通过 View Type 进行排序可以更清晰地看出。每种视图类型(如表单视图)可以有一个或多个 base 视图定义(包含空的继承视图字段)。菜单项使用窗口动作(Window Action)可以指定要用到的 base 视图,如果没有定义,将使用排序值(Sequence)最低的,因而可将其视为默认视图。 点击视图,可以在表单中看到包含排序值在内的所有详情
每个 base 视图都可以有多个扩展,称为继承视图。每个继承视图可以对 base 视图添加修改,如对已有表单添加字段。
“ 小贴士:继承视图自身也可以被其它视图继承,这时最外层继承在内层继承执行后作用于base 视图。”
res.partner 模型会包含众多的视图定义,因为类似我们的很多应用都需要对其进行扩展。一个替代方法是进入我们需要扩展的某一具体视图,使用开发者工具菜单对其进行编辑。这也可用于了解某一视图在用户界面的某处被使用了。下面我们就来进行操作:
1. 点击 Contacts 应用显示联系人名片列表,然后点击任意名片进入相应的表单视图:
2.在表单视图界面,点击开发者工具菜单(右上角调试图标)并选择编辑视图(EditView:Form),这时可以看到与前述模型页面相同的视图详情表单,但展示在实际定义使用base 视图之上。也就是 res.partner.form 视图,通过 External ID 可以查看模块所有者。本处为 base.view_partner_form,所以我们知道这个视图属于 base 模块。在 Architecture字段中,我们可以看到 base 视图定义的 XML 代码。我们可以在这里编辑视图结构并添加
3.使用继承视图标签我们可以为 base 视图添加扩展视图:
I. 首先我们需要在原始视图选择一个元素作为扩展点,我们可以通过查看 base 视图的结构选择一个包含 name 属性的 XML 元素,大多数情况选择的是一个元素,此处我们选择元素
II. 现在,点击开发者工具菜单,然后点击编辑视图(Edit View:Form),选择继承视图(Inherited Views)标签回到前述的界面,然后点击最下方的 Add a line 链接
III. 此时会弹出名为 Create Views which inherit from this one 的窗口,填入如下内容
⚫ View Name: Contacts – Custom “Is Work Team” flag
⚫ Architecture:输入如下 XML 代码
<field name="category_id" position="after">
<field name="x_is_work_team" />
</field>
⚫ 其它重要字段,如 Model, View Type 和 Inherited View 使用默认值即可
IV. 此时点击 Save & Close 按钮,然后在 Edit View: Form 窗口点击 Save 按钮在保存修改后重载联系人表单视图页面即可查看到变化,在大数浏览器中可以使用F5 快捷键来重载页面。这时打开任意联系人名片,可以看到右侧 Tags 字段下会多出一个新字段