“首页”的版本间的差异
(→Odoo中文版技术书籍项目) |
(→计算字段) |
||
第193行: | 第193行: | ||
===[[存储计算字段]]=== | ===[[存储计算字段]]=== | ||
===[[关联字段]]=== | ===[[关联字段]]=== | ||
+ | 字段可以使用函数计算值,而不是简单地读取数据库存储的值。计算字段就像常规字段一样声明,但是有额外的compute参数,定义在函数中用来计算值. | ||
+ | 在大多数情况下,计算的字段涉及编写一些业务逻辑,因此我们将在第7章第七章 ORM应用逻辑 - 支持业务流程中学习.我们仍将在此解释它们,但将使业务逻辑方面尽可能地简单 | ||
+ | |||
+ | 。让我们来做一个例子:阶段有一个fold字段。我们将在to_do 任务中增加一个计算字段,对应相关阶段的“folded?”标记。 | ||
+ | |||
+ | |||
+ | 我们应该编辑TodoTask 模型 在todo_model.py文件添加以下内容: | ||
+ | |||
+ | # class TodoTask(models.Model): | ||
+ | stage_fold = fields.Boolean( | ||
+ | 'Stage Folded?', | ||
+ | compute='_compute_stage_fold') | ||
+ | @api.depends('stage_id.fold') | ||
+ | def _compute_stage_fold(self): | ||
+ | for task in self: | ||
+ | task.stage_fold = task.stage_id.fold | ||
+ | |||
+ | 前面的代码添加了一个新的stage_fold字段和_compute_stage_fold方法用于计算它。通过函数名作为字符串,但它也允许它作为一个可调用的引用传递(函数标识符没有引号)。在 | ||
+ | |||
+ | 本例中,我们应该确保在该字段之前,在Python文件中已定义函数。 | ||
+ | |||
+ | 通常,当计算依赖于其他字段时,需要@api.depends装饰器。它让服务器知道什么时候重新计算存储或缓存的值。一个或多个字段名被作为参数接受,点符号可以用来跟踪字段关 | ||
+ | |||
+ | 系。 | ||
+ | |||
+ | 计算函数将指定一个值到字段或多个字段用来计算。如果它不能,就是错误的。既然self是一个记录对象,我们的计算仅仅是 通过stage_id.fold获取“Folded?” 字段。通过将 | ||
+ | |||
+ | 该值(写入)分配给计算字段stage_fold,来实现这一 结果。 | ||
+ | 我们现在还不会对这个模块的视图进行操作,但是您可以立即对任务表单进行快速编辑,以确认计算出的字段是否如预期的那样:使用开发者模式 ,选择编辑视图,并直接在XML表 | ||
+ | |||
+ | 单中添加字段。不用担心:下一次升级时,它将被干净的模块视图所取代。 | ||
+ | |||
==[[模型约束]]== | ==[[模型约束]]== | ||
==[[第五章 小结]]== | ==[[第五章 小结]]== |
2017年4月29日 (六) 17:16的版本
目录
- 1 Odoo 大V社概况
- 2 前言
- 3 第一章 Odoo 入门
- 4 第二章 构建您的第一个应用程序
- 5 第三章 继承–扩展现有的应用程序
- 6 第四章 模块数据
- 7 第五章 模型 - 结构化应用程序数据
- 8 第六章 视图 - 设计用户界面
- 9 第七章 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 17.武汉-周传红
前言
第一章 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类
瞬态和抽象模型
检查现有模型
创建字段
基本字段类型
公共字段属性
特殊字段名称
模型之间的关系
多对一关系
多对多关系
一对多反向关系
分层关系
使用动态关系的参考字段
计算字段
在计算字段上搜索和写入
存储计算字段
关联字段
字段可以使用函数计算值,而不是简单地读取数据库存储的值。计算字段就像常规字段一样声明,但是有额外的compute参数,定义在函数中用来计算值. 在大多数情况下,计算的字段涉及编写一些业务逻辑,因此我们将在第7章第七章 ORM应用逻辑 - 支持业务流程中学习.我们仍将在此解释它们,但将使业务逻辑方面尽可能地简单
。让我们来做一个例子:阶段有一个fold字段。我们将在to_do 任务中增加一个计算字段,对应相关阶段的“folded?”标记。
我们应该编辑TodoTask 模型 在todo_model.py文件添加以下内容:
- class TodoTask(models.Model):
stage_fold = fields.Boolean( 'Stage Folded?', compute='_compute_stage_fold') @api.depends('stage_id.fold') def _compute_stage_fold(self): for task in self: task.stage_fold = task.stage_id.fold
前面的代码添加了一个新的stage_fold字段和_compute_stage_fold方法用于计算它。通过函数名作为字符串,但它也允许它作为一个可调用的引用传递(函数标识符没有引号)。在
本例中,我们应该确保在该字段之前,在Python文件中已定义函数。
通常,当计算依赖于其他字段时,需要@api.depends装饰器。它让服务器知道什么时候重新计算存储或缓存的值。一个或多个字段名被作为参数接受,点符号可以用来跟踪字段关
系。
计算函数将指定一个值到字段或多个字段用来计算。如果它不能,就是错误的。既然self是一个记录对象,我们的计算仅仅是 通过stage_id.fold获取“Folded?” 字段。通过将
该值(写入)分配给计算字段stage_fold,来实现这一 结果。 我们现在还不会对这个模块的视图进行操作,但是您可以立即对任务表单进行快速编辑,以确认计算出的字段是否如预期的那样:使用开发者模式 ,选择编辑视图,并直接在XML表
单中添加字段。不用担心:下一次升级时,它将被干净的模块视图所取代。