odoo12 视图使用方式(一)
视图定义了模型数据如何显示, 每种类型的视图代表一种数据可视化模式,基本的视图定义 一个
视图是以一条ir.ui.view模型数据的形式定义的。可以用于存储业务数据,用于向用户展现数据以
及输入数据等。View的构成包括field,group,button,page,notebook,tree,form,footer等
用户界面设计元素。
通用结构
name 当前视图的描述
model 视图链接的模型
priority 优先级,客户端请求视图时会通过id或者model,type进行搜索,对于按照model和type搜
索的情况会将所有匹配model和type的数据全部搜索出来,然后会将该属性最小值的视图
返回
arch 视图布局的描述
groups_id:权限组,
inherit_id 当前视图的父及视图,一般用于继承或修改父视图,常用于添加字段或
修改属性,继承规范后续介绍
banner_route 加载视图时的路由地址,在对应的路由方法返回的json串需要包含
key html,只有扩展tree,kanbn,form等属性时才可以使用该属性,例如
.. code-block:: xml
<tree banner_route="/module_name/hello" />
.. code-block:: python
class MyController(odoo.http.Controller):
@http.route('/module_name/hello', auth='user', type='json')
def hello(self):
return {
'html': """
<div>
<link href="/module_name/static/src/css/banner.css"
rel="stylesheet">
<h1>hello, world</h1>
</div> """
-
Tree视图
以列表形式展示多条数据,根元素是,其中包裹任意field,每一个field就是列
表中的一列。包含以下属性:
editable 该属性可以控制视图本身就可以编辑,包含两个选项值top/bottom,用于控
制新纪录位于列表的
底部或者顶部
default_order 默认排序规则
colors 被decoration-{KaTeX parse error: Expected 'EOF', got '}' at position 5: name}̲代替 fonts 被…name}代替
{$name} 可选值 bf (‘font-weight:bold’)
It(‘font-style’:italic)
颜色标识:-danger,-primary,-success,-info,-warning
create,edit,delete:表示该视图下的记录是否可以创建,编辑,删除(属性值只能为
true/false),否则不生效
limit:单页默认显示数据个数
String 显示名称
field 定义应在当前记录上显示的列
Name 要在当前模型中显示的列的名称(每个视图中只能别使用一次)
String 当前列字段的名称
Invisible 获取并存储该字段,但不显示
Groups 权限组,表示哪些组可以看到该字段
Widget 挂件,系统挂件主要有以下:
Progressbar, 进度条挂件
Many2onebutton (后续了解)
Handle 拖动挂件,只能用于sequence字段,如下图:
Sum,avg 统计函数功能,求总和或平均值
attrs 基于记录值得动态属性,可以根据字段值进行属性控制,包invisible,readonly
等
control 为当前视图定义客户端控制作用于one2many字段即form下的tree,除了一
下子元素不支持任务其他属性
Create 会在当前列表视图下增加一个添加记录的元素,当定义了该元素时,会重
写”添加一行”按钮
String(必输),标识当前按钮的显示文本
Context上下文当前元素里的上下文会和当前记录本身的上下文合并,可以用来重写
默认值
例如产品的行视图,设置more显示类别字段
… code-block:: xml<control> <create string="Add a product"/> <create string="Add a section" context="{'default_display_type': 'line_section'}"/> <create string="Add a note" context="{'default_display_type': 'line_note'}"/> </control>
Button :
icon 显示按钮的图标
string 显示按钮的文本内容
type:按钮的类型
Object: 当类型为object是,点击该按钮会调用方法,该按钮的名称为方法名,可以调用当前记录以及上下文,该模式下按钮属性args,可以为按钮方法提供json格式的参数
Actoin: 当类型为action时,点击该按钮会调用对应的动作,当前动作的name是对应的数据库动作的id,从上下文中可以拿到当前模型(active_model)以及数据(active_ids),
2.Form视图
Form视图时用来显示单一记录的表单视图,根元素是,视图由普通的html和其他结构组件组成,包含以下组件:
notebook 定义选项卡部分,每一个tab页可以定义page子元素,每个page元素可以 使用以下属性。
String: 表示page页签的显示文本
Attrs:基于记录值得动态属性
group 用于在表单中定义列布局,默认情况下组定义两列,一列显示label(字段文本名称),另外一列显示字
段value,可以使用col定义group中显示的列数
String:组标题
newline 仅可以在group元素中使用,表示提前结束当前行并立即切换到新行
separator 水平间隔,如果 有string属性则表示标题
sheet 可以直接作为form的子元素使用,以便获得更窄的布局
header 和sheet匹配使用,类似于表头属性,一般用于显示工作流按钮或状态挂件
button:部分属性可参看tree视图中的介绍,在form视图中可以添加以下属性
Special 在打开的form弹出框中的按钮中可以为该属性指定以下值save/cancel,当指定为save时,会保存该记录并关闭对话框,当指定为cancel时不保存记录但关闭对话框
field 渲染当前记录的单个字段,可以使用以下属性
Name:需要渲染的字段名称
Widget 挂件:可参考tree视图字段挂件,特殊挂件有clickable
options 属性值json对象,例如
class属性,渲染元素的html class,在odoo中已经封装好的有以下
oe_inline 行内
oe_left 靠左
oe_right 靠右
oe_read_only 只有在读时显示,oe_edit_only:编辑时显示
attrs 基于记录值得动态属性
domain 该字段值得搜索条件
context 上下文属性
readonly 只读属性
required 是否必输
nolabel 不会显示字段的文本显示信息
placeholder 填写提示
业务视图
一般来说业务视图包含以下部分,状态导航栏(header),sheet页部分(moddle),视图结构如下,状态栏如下图
<form>
<header> ... content of the status bar ... </header>
<sheet> ... content of the sheet ... </sheet>
<div class="oe_chatter"> ... content of the bottom part ... </div>
</form>