Odoo之Field
字段描述符包含了字段的定义,下面是实例化一个字段时的属性:
class Field(object):
:param string: 字段标签(用户所见),如果不设置ORM将取用类的字段名(大写)。
:param help: 用户所见的工具提示(string)
:param readonly: 是否只读(boolean,默认为False)
:param required: 是否为必须字段(boolean, 默认为False)
:param index: 字段是否在数据库中索引(boolean, 默认为False)
:param default: 字段的默认值; 要么为一个静态值,要么接受一个记录集,返回一个值。
:param states: 一个字典,state值映射到一个列表(UI 属性值对)。这些属性为'readonly', 'required', 'invisible'.
注意: 任意基于state的字段要求state字段的值在客户端UI上是可用的。
:param groups: 逗号分割的列表,(group xml ids)这仅限于对给定组的用户访问。
:param bool copy: 当记录(duplicated)复制的时候,字段值是否被拷贝(copied)
(默认: 常规字段为True, one2many和computed字段为False,包括property字段和related字段)
:param string oldname: 这个字段之前的名字, 以便ORM在migration是自动重新命名它。 Computed fields
计算字段其值是被计算的,而不是简单地从数据库进行读取。下面给出计算字段特有的属性,定义
这样一个字段,简单为compute属性提供一个值。 :param compute: 计算这个字段的方法名
:param inverse: 反转这个字段的方法名 (可选的)
:param search: 实现在这个字段上搜索的方法名(可选的)
:param store: 这个字段是否存储在数据库中 (boolean, 在计算字段上默认为False)
:param compute_sudo: 是否以超级管理员来计算字段,来绕过访问权限。(boolean, 默认为False)
例如:
upper = fields.Char(compute='_compute_upper',
inverse='_inverse_upper',
search='_search_upper') @api.depends('name')
def _compute_upper(self):
for rec in self:
rec.upper = rec.name.upper() if rec.name else False def _inverse_upper(self):
for rec in self:
rec.name = rec.upper.lower() if rec.upper else False def _search_upper(self, operator, value):
if operator == 'like':
operator = 'ilike'
return [('name', operator, value)]
这个计算方法必须为被调用记录集合中的所有记录进行指定这个字段(为每个记录这个字段派遣一个字段值,通过计算得到)。
计算方法必须应用一个装饰器:meth:`openerp.api.depends` 来指定字段的依赖用于计算; 这些依赖用于决定什么时候重新计算这个字段。
重新计算是自动的保证缓存和数据库的一致性。
注意:同一方法可用于多个字段,你仅仅须要在这个方法中对所有给定的字段进行派遣。对于所有字段,这个方法将会触发一次。
默认情况下,计算字段不存储在数据库中,进行即时运算。设置,store=True会将字段值存储在数据库中,
存储字段的优点是在该字段上的搜索由数据库本身完成,缺点是当这个字段被重新计算的时候,它需要数据库更新。
反转方法,计算方法的逆运算: 你必须在字段的依赖上做些必要的变化,以能够使得计算结构符合期望的值。
注意:没有逆运算方法的计算字段默认情况下为只读的。
在做模型上做一个实际的搜索之前处理域时,这个搜索方法被触发。它必须返回一个域(等价于这样条件:【field operator value】) Related fields
Related字段的值由关系字段序列给出,在reached model(可到达的模型上)上读取一个字段。
要遍历的字段序列通过这个属性指定。 :param related: 字段名序列
如果字段属性没有被重新定义,这些字段的属性被自动从源字段进行拷贝。( string, help, readonly, required(所有的字段为required=True,这个related字段被设置成required=True)
), groups,digits,size,translate,sanitize,selection,comodel_name,domain,context。
所有的semantic-free属性将从源字段被拷贝过来。
默认情况下,related字段的值不会存储在数据库中。添加store=True属性则进行存储,就像computed字段。
当他们的依赖被修改的时候Related字段将会自动重新计算。 Company-dependent fields
以前的property字段, 这些字段的值取决于公司。换句话说,属于不同公司的用户对于给定的一条记录将会看到不同的值。 :param company_dependent: 该字段是否company-dependent(boolean) Incremental definition(增量定义)
一个字段定义为模型类的类属性。如果这个模型是可继承的,那么通过在子类上重新定义同一类型且同一字段名的字段来扩展模型字段。
从父类中获取的字段属性将会被子类中给定的字段属性给覆盖。
例如:下面第二个类只在state字段添加了一个工具提示:
class First(models.Model):
_name = 'foo'
state = fields.Selection([...], required=True) class Second(models.Model):
_inherit = 'foo'
state = fields.Selection(help="Blah blah blah")
Odoo之Field的更多相关文章
- odoo view field option, action flage 参数
options JSON object specifying configuration option for the field's widget (including default widget ...
- Odoo : ORM API
记录集 model的数据是通过数据集合的形式来使用的,定义在model里的函数执行时它们的self变量也是一个数据集合 class AModel(models.Model): _name = 'a.m ...
- 【odoo14】第六章、管理模块数据
本章代码可在原作者github下载 使用外部ID及命名空间 外部ID及XML ID用于标记记录.到目前为止,我们在视图.菜单及动作中接触了XML IDs.本节我们将进一步了解什么是XML ID. 步骤 ...
- odoo开发笔记 -- 异常处理in resolve_deps field = model
场景描述: 更新代码,重启服务服务后,odoo后台报错,提示关键字:in resolve_deps field = model._fields[fname] KeyError: 'entry_id' ...
- Odoo field字段标签属性详解
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826356.html 标签属性 1) name:标识字段名称 2)string:标签文本,如果我们想要覆盖 ...
- odoo模块
odoo模块包括 业务对象,web控制器,数据文件,前面2个是Python模块,而数据文件则是odoo特有的文件,例如,odoo数据文件,web数据.这些数据文件在 __odoo__.py 进行定义, ...
- Displaying a full list of groups in Odoo's Kanban view
Kanban view is probably the most flexible view in Odoo. It can be used for many different purposes. ...
- Odoo Many2many 指定默认分组过滤
在odoo里如果想单击某个菜单打开的页面是自带过滤的,可以在打开菜单的动作中添加默认过滤来实现,今天有同学在群里问,如何在Many2many的添加更多的弹出窗口中添加类似的过滤,其实是非常非常简单的, ...
- Defining custom settings in Odoo
Unfortunately Odoo documentation doesn’t seem to include any information about adding new configurat ...
随机推荐
- C/C++遍历目录下的所有文件(Windows/Linux篇,超详细)
本文可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6815924.html. 前面的一篇文章我们讲了用Windows API遍历一个目录下的所有文 ...
- 文字在div中居中
话不多说,看代码 div class="div1"> <span class="span2">等级分类法拉盛说的分离卡萨丁</span& ...
- 史上最完整Hadoop2.x完全分布式安装部署-小白也能学会
一.环境要求: 1. 虚拟机安装并设置网络: 2. 修改主机地址映射: 3. 必备软件:Jdk.Development Tools Development ...
- Android控件的使用
1. RadioButton (单选按钮) 嵌入到RadioGroup中实现单选效果 android:checkedButton="radio的id值" int getchecke ...
- DISCUZ积分及点评需求
1.点评设置(可增强用户互动,但又不会顶帖刷屏):目前很难限制用户通过点评刷积分,点评等同于回复但却不需要审核,目前只是简单地关闭了点评功能.需求:可以审核点评内容:可以限制点评不获得积分或每天点评获 ...
- Bash命令行编辑
1.Readline库和命令行编辑 bash shell提供了两个内置编辑器:emacs和vi,利用它们可以以交互模式对命令行列表进行编辑,这项特性是通过Readline库的软件包实现的.当使用命令行 ...
- CoordinatorLayout+沉浸式状态栏
没有gif 说个*B 注意看 状态栏的瑶瑟变化 (如果我是你 我不会去计较下边的toast) 之前为了这个效果我查了好多文章 博客什么的 ,,要么就是刚开始图片背景没有填充到状态栏下 要么就是 ...
- word和.txt文件转html 及pdf文件, 使用poi jsoup itext心得
word和.txt文件转html 及pdf文件, 使用poi jsoup itext心得本人第一次写博客,有上面不足的或者需要改正的希望大家指出来,一起学习交流讨论.由于在项目中遇到了这一个问题,在 ...
- Linux下SVN+多个Tomcat自动部署
项目中都是jsp开发,所以用到Tomcat. 在我文章中也写过多个Tomcat 的部署,具体可以参考:http://www.cnblogs.com/magmell/p/7045193.html SVN ...
- 《JavaScript高级程序设计》笔记二
第二章 在HTML中使用JavaScript 要想把JavaScript放到网页中,就必须涉及到Web的核心语言HTML.向HTML页面中插入JavaScript的主要方法,就是使用<scrip ...