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 ...
随机推荐
- sql还原(.mdf文件还原)
第一步: 把备份文件放到目录:C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA (默认)(这里用 MyDB.md ...
- 【JAVAEE学习笔记】hibernate01:简介、搭建、配置文件详解、API详解和CRM练习:保存客户
今日学习:hibernate是什么 一.hibernate是什么 框架是什么: 1.框架是用来提高开发效率的 2.封装了好了一些功能.我们需要使用这些功能时,调用即可.不需要再手动实现. 3.所以框架 ...
- Java数据库连接错误集
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after co ...
- Java常用类之要点总结
Java常用类之要点总结
- 在eclipse中输入.后提示解决
1.调用系统自带的提示: 如果在eclipse中输入.后没有提示对应对象的属性和方法帮助列表,可以进行以下设置就可以了 eclipse -> Window-> Preferences-&g ...
- Windows下用Composer引入官方GitHub扩展包
Windows下用Composer引入官方GitHub扩展包 1. 当你打开威武RC4版本的链接的时候,往下拉你可以看到这个,然后你要做的就是想到,百度Composer,看看是个什么鬼,别想太多,跟着 ...
- MQL语句大全
mysql sql语句大全 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql se ...
- jsonp跨域再谈
昨天面试雷锋网,问到了jsonp跨域的问题,其实这个问题之前就会的,没有多大的深入,记得有一个名词在跨域中出现,就是同源机制, JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在J ...
- java调用(axis2)WebService传递对象类型参数(源码)
温馨提示:axis2 jar包哟 public static String pubRemoteFuc() { String endpoint = "http:/ ...
- Ubuntu下解决解压zip文件中文文件名乱码问题
在Ubuntu下解压Windows下压缩的zip文件时,会出现解压出的带中文文件名的文件名乱码,这是因为Ubuntu和Windows默认的编码不同,Ubuntu下默认的编码是UTF-8,而Window ...