2.3.1 模型View的设计
设计View的时候要以提升用户体验为宗旨。
(1)一个常规模型,必须要具备Tree、Form、Search三种最基本的视图。一个模型可以定义多套视图。如果使用多套视图,调用的action中需要明确指定view_id、search_view_id 。
(2)有开始日期、结束日期的模型,定义calendar视图。
(3)频繁使用的固定数据可以考虑增加kanban视图,并在kanban视图中显示关键信息和快捷按钮,便于用户操作。
(4)需要查看汇总或分组数据的模型,定义pivot和graph视图。
(5)Tree view:显示的字段精简、概要,能比较出行数据之间的差异,显示能区明显分行数据的关键字段,比如log的create_date,必须考虑数据的排序。
(6)Search view:定义搜索框中可供搜索的字段、过滤器、分组条件。
(7)Form view:字段排列要整洁、有序,关键字段放在前面,有多个one2many、many2many字段的情况下考虑分tab页。整体布局尽量符合Odoo风格,协调一致。
(8)Calendar view:日历视图中的位置有限,放置的字段更要精简。
(9)pivot和graph视图:正确使用可作为度量的字段。
(10)所有的视图architecture需要在string属性中声明视图含义。
(11)一个模型可能有多个视图时,需要定义ir.actions.act_window.view,显式指定该action绑定的view_id。(参考pycharm template中的 view_combine_advance)。
(12)xpath定位表达式中不能使用可以被翻译的属性。
(13)action中必须声明namehelp字段name。
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a record.
</p>
</field>
(14) view 文件中,view、action、menu的xmlid必须唯一,命名规范:
view_{type}{model}{description}
action_{model}_{description}
menu_{model}_{description}
修改menu action时,必须同时改掉xmlid
(15)杜绝重写view,需要修改被依赖模块的view时,通过继承的方式实现。因为重写View的模块被删除时,这个重写的view不会被还原。
2.3.2. field常见widget属性
(1) clickable:常用在status_bar的 state
2.3.3. button
confirm="", 点击button时弹出的确认窗口。