“首页”的版本间的差异
(→sheet工作表) |
(→标题和副标题) |
||
第249行: | 第249行: | ||
====[[标题和副标题]]==== | ====[[标题和副标题]]==== | ||
+ | <group>元素之外的字段 是不会自动呈现标签的。这同样适用于标题元素,所以<label for"..."/>元素经常被用来呈现标题。 | ||
+ | 虽然会带来一些额外的工作,但是这样做的优势是:对标签显示具有更多的控制。 | ||
+ | 常规的HTML,包括css-stylel元素,也可以用来制作闪光标题。为了实现最佳效果,标题应该通过oe_title嵌入在<div>中。 | ||
+ | 下边是一个扩展的sheet元素,它的标题添加了一些额外字段作为副标题。 | ||
+ | <sheet> | ||
+ | <div class="oe_title"> | ||
+ | <label for="name" class="oe_edit_only"/> | ||
+ | 200 | ||
+ | <h1><field name="name"/></h1> | ||
+ | <h3> | ||
+ | <span class="oe_read_only>By</span> | ||
+ | <label for="user_id" class="oe_edit_only"/> | ||
+ | <field name="user_id" class="oe_inline" /> | ||
+ | </h3> | ||
+ | </div> | ||
+ | <!-- More elements will be added from here... --> | ||
+ | </sheet> | ||
+ | |||
+ | 在这里,我们可以看到,我们使用常规的HTML元素,如div,span,H1,和H2。<label>元素允许我们控制何时何地展示。‘for’属性告诉我们获取标签文本的字段。另一种可能性是使用字符串属性来提供特定文本。我们的实例使用了class="oe_edit_only",这样只有在编辑模式可见。 | ||
+ | 在某些情况下,如合作伙伴或产品,需要有代表性的图像显示在左上角。假设我们有一个my_image二进制字段,我们可以在<div class=“oe_title”>行前添加: <field name="my_image" widget="image" class="oe_avatar"/> 。 | ||
+ | |||
====[[智能按钮区域]]==== | ====[[智能按钮区域]]==== | ||
====[[对表单中的内容进行分组]]==== | ====[[对表单中的内容进行分组]]==== |
2017年3月18日 (六) 15:08的版本
目录
- 1 Odoo 大V社概况
- 2 前言
- 3 第一章 Odoo 入门
- 4 第二章 构建您的第一个应用程序
- 5 第三章 继承–扩展现有的应用程序
- 6 第四章 模块数据
- 7 第五章 模型 - 结构化应用程序数据
- 8 第六章 视图 - 设计用户界面
- 9 <field name="name"/>
- 10 第七章 ORM应用逻辑 - 支持业务流程
Odoo 大V社概况
Odoo 大V社成员来自五湖四海,他们热爱开源,无私奉献,甘于把自己的业余时间投入到公益的 Odoo 相关资料的整理中去,
为 Odoo 在中国区的推广无私奉献。
odoo 中文书籍交流群:343593855(验证信息:参与odoo中文书籍)
Odoo中文版技术书籍项目
- 项目一期目标: Odoo 中文开发手册
- 项目性质:公益,保留所有参与人员的署名权;项目成果归全人类
- 项目使命:Odoo 中文书籍编写整理,推倒 odoo 语言壁垒,助力 odoo 中国推广
- 项目成员:
- 统筹:
- 01.广州-唐振宽(稿件初审) 02.广州-黄伟杰(任务分派) 03.广州-彭 明(进度跟踪)
- 审核:
- 01.苏州-刘春涛(ChinaMaker)
- 成员:
- 统筹:
01.苏州时 威 02.苏州庄春梅 03.杭州胡 恒 04.广州陈厚源 05. 06.苏州孙保锁 07.成都曾发军 08.深圳季蜗牛 09.北京乔明洋 10.香港胡sir 11.上海高守庆 12.上海赵祥涛 13.上海罗英川布 14.台北蘇sir 15.苏州-n37r06u3 16.石家庄-leo
前言
第一章 Odoo 入门
安装Odoo主机服务器
准备Debian 主机
为创建Odoo用户帐户
从源码安装Odoo
创建新的Odoo应用数据库
管理你的Odoo数据库
Odoo 版本
更多服务器选项
Odoo 服务器配置文件
更改侦听端口
数据库的过滤选项
管理服务器日志消息
在工作站上进行开发
使用Linux 文本编辑器
安装和配置 Samba
激活开发者工具
安装第三方模块
查找社区模块
配置 addons 路径
更新应用程序列表
第一章 小结
第二章 构建您的第一个应用程序
基本概念
了解应用程序和模块
修改和扩展模块
创建模块的基本框架
关于许可证
添加 addons 路径
安装新模块
升级模块
服务器开发模式
模型层
创建数据模型
加入自动化测试
视图层
添加菜单选项
创建窗体视图
业务凭证窗体视图
添加动作按钮
用groups来组织forms
完整的Form视图
添加列表和搜索视图
业务逻辑层
添加业务逻辑
添加测试
设置安全访问权限
测试安全访问权限
添加访问控制安全
Row-level访问规则
更好的模块描述
第二章 小结
第三章 继承–扩展现有的应用程序
向待办事宜应用程序添加共享功能
扩展模型
向模型中添加字段
修改现有字段
修改模型的方法
扩展视图
扩展表单视图
扩展树视图和搜索视图
更多的模型继承机制
使用原型继承复制特征
使用委托继承嵌入模型
添加社交网络功能
修改数据
修改菜单和操作记录
修改安全记录规则
第三章 小结
第四章 模块数据
了解外部标识符
寻找外部标识符
导出和导入数据
导出数据
导入数据
CSV数据文件相关记录
模块数据
演示数据
XML数据文件
数据的noupdate属性
在XML里定义记录
设置字段值
使用表达式设置值
设置字段值的关系
常用模型的快捷键
XML数据文件的其它操作
删除记录
触发功能和工作流
第四章小结
第五章 模型 - 结构化应用程序数据
将应用程序特性组织到模块中
todo_ui模块介绍
创建模型
模型属性
模型和Python类
瞬态和抽象模型
检查现有模型
创建字段
基本字段类型
公共字段属性
特殊字段名称
模型之间的关系
多对一关系
多对多关系
一对多反向关系
分层关系
使用动态关系的参考字段
计算字段
在计算字段上搜索和写入
存储计算字段
关联字段
模型约束
第五章 小结
第六章 视图 - 设计用户界面
使用XML文件定义用户界面
菜单项
窗口动作
上下文和域
上下文数据
域表达式
窗体视图
处理同一类型的几个视图
相同模型可以有多个同类型的视图,因为一个窗口动作通过它的“XML ID ”可以指向的特定的视图。这样我们就可以灵活的根据菜单项,通过不同的视图打开相同的模型。 要实现以上功能,需要根据视图中的 XML ID,为窗口操作添加view_id属性, 例如我们在todo_app.action_todo_task 动作中曾使用类似view_id="view_form_todo_task_ui"的做法。 但是, 如果没有特定视图的定义,将如何? 在这种情况下, 使用的将是第一个返回的查询视图,这将是一个具有较低的优先级视图。如果我们添加新的视图,并设置它的优先级低于现有的, 它将被调用。最终的结果是:看起来像这个新视图覆盖了原来的。 因为缺省值的视图优先级是 16, 较低优先级的视图将被采纳, 所以 15 的优先级将工作。为了保持我们的例子可读性,这不是最常用的方法。
我们将在下一个例子中使用优先级方法。
业务文档视图
header头部
顶部的标题将展示 文档流转的阶段和生命周期,以及动作按钮. 这些操作按钮一般为表单按钮,最重要的阶段可以使用class=“oe_highlight”突出显示.文档生命周期通过状态栏小控件呈现当前所处的状态.这些通常是状态选择字段或者多对一的阶段字段.这些字段在很多odoo核心模块中可以找到.这些多对一的阶段字段 通过建立模型实现过程步骤.它们可以根据用户需求动态编译,并且完美支持看板. 状态是一个选择列表,呈现的是过程中有几个相当稳定的步骤阶段,例如:新建、处理中、完成。它不是由用户最终配置的,但因为它是静态的,所以在事务逻辑中更容易使用。它也支持字段展示:状态属性可以根据文档当前的属性决定一个字段是否向用户呈现。 阶段出现的比状态晚,两者并存,但是阶段取代状态将是odoo内核发展的趋势。但正如所看到的前面的解释,状态仍然提供一些阶段不具备的功能。通过状态和阶段的互相映射,可以做到两全其美。在前面的章节中,在任务阶段模型中添加一个状态字段,通过计算控制字段,使得状态字段属性可以使用。
在views/todo_view.xml 文件中我们可以添加状态栏来扩展基本的标题。 <header> <field name="state" invisible="True" /> <button name="do_toggle_done" type="object" attrs="{'invisible':[('state','in',['draft'])]}" string="Toggle Done" class="oe_highlight" /> <field name="stage_id" widget="statusbar" clickable="True" options="{'fold_field': 'fold'}" /> </header>
这里我们增加了一个隐藏的状态字段。我们需要客户端发送给服务器的数据请求中包含该字段,否则就不可用于表达式。 提示 非常重要的是:任何你想使用的字段,在一个域或属性表达式,必须加载到视图中,故可以将随时会使用但不需要用户看到的字段设置为不可见。
下一步将一个按钮添加到状态栏,让用户切换任务完成标记。状态栏中按钮的显示,应该依据文档所处步骤阶段而变化。在草稿状态,我们通过“attrs”属性隐藏按钮。要实现这个功能,需要使用状态字段,它无须呈现在窗口,所以我们必须添加这一隐藏字段。如果我们有一个状态选择字段,我们可以使用状态属性。在这种情况下我们可以通过state=“open,done”做到同样的效果。虽然它不如‘attrs’属性灵活,它更多的是简洁.这些可见性也可以用于其他视图元素,例如字段.我们将在本章后面更详细地探讨它们。点击属性允许用户点击状态栏来改变文件的阶段。我们通常会启用这个,但也有我们不需要情况。例如当我们需要更多的控制工作流程或者用户通过可见的动作按钮来实现阶段的行进,这样方便实现阶段转换前的确认。
当使用阶段状态栏小部件时,我们可以使用在阶段族群中隐藏的很少使用的阶段。为此,阶段模型必须有一个标志来
配置隐藏属性,通常命名为fold。StatusBar控件应该使用一个options属性,如前面代码所示,提供字段名的fold_field选项。当使用含有状态字段的状态栏小部件时,通过statusbar_visible 可以实现类似的效果。它可以呈现特殊情况下各种可见的和隐藏的异常状态。 例如: <field name="stage_id" widget="statusbar" clickable="True" statusbar_visible="draft,open" />
sheet工作表
表画布是表单实际的数据元素放置的主要区域,它看起来像一个实际的纸质文件,odoo中的记录也被作为文档。 通常,一个文档表结构将这些部分:
文档标题和副标题。 在右上角的一个按钮盒, 其他文档标题字段。 在页面和标签中提供有组织字段的笔记簿。
让我们一起来了解下这些区域.
标题和副标题
<group>元素之外的字段 是不会自动呈现标签的。这同样适用于标题元素,所以<label for"..."/>元素经常被用来呈现标题。
虽然会带来一些额外的工作,但是这样做的优势是:对标签显示具有更多的控制。
常规的HTML,包括css-stylel元素,也可以用来制作闪光标题。为了实现最佳效果,标题应该通过oe_title嵌入在下边是一个扩展的sheet元素,它的标题添加了一些额外字段作为副标题。
<sheet>
<label for="name" class="oe_edit_only"/> 200
<field name="name"/>
By <label for="user_id" class="oe_edit_only"/> <field name="user_id" class="oe_inline" />
</sheet>
在这里,我们可以看到,我们使用常规的HTML元素,如div,span,H1,和H2。<label>元素允许我们控制何时何地展示。‘for’属性告诉我们获取标签文本的字段。另一种可能性是使用字符串属性来提供特定文本。我们的实例使用了class="oe_edit_only",这样只有在编辑模式可见。 在某些情况下,如合作伙伴或产品,需要有代表性的图像显示在左上角。假设我们有一个my_image二进制字段,我们可以在<div class=“oe_title”>行前添加: <field name="my_image" widget="image" class="oe_avatar"/> 。
智能按钮区域
对表单中的内容进行分组
标签笔记本
业务应用程序通常是关于仓库产品、财会部门发票等记录的系统。大部分这些记录信息都可用纸质文档呈现。为了更好的用户体验,表单视图都是在模仿这些纸质文档。
例如在我们的系统中,我们可以认为 “to_do task”包含需要填写的纸制表单。 我们将提供一个遵循该设计思想的表单视图。
要增加一个具有业务文档视图基本骨架的XML视图,我们需要编辑“views/todo_views.xml”文件,并置于文件顶部。
<record id="view_form_todo_task_ui" model="ir.ui.view"> <field name="model">todo.task</field> <field name="priority">15</field> <field name="arch" type="xml"> <form> <header> </header> <sheet> </sheet>
<field name="message_follower_ids" widget="mail_followers" /> <field name="message_ids" widget="mail_thread" />
</form> </field> </record> 视图名称是可选的,如果缺少将自动生成。为了简单,我们省略了视图记录中的<field name="name">元素。
业务文档通常包含3大部:标题状态栏、主要内容表单、底部历史信息和通讯内容。在底部的历史和通信部分,可以使用邮件插件模块提供的社交网络 小部件。为了可以使用它们,我们的模型需要继承“mail.thread”混合模型。详情见第3章 继承–扩展现有的应用程序。