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还原(.sql文件还原)
第一步: 把还原文件直接拖到SQL Server 2012(或者其他版本)里面,这里以MyDB.sql为例
- Tips_of_JS 之 利用JS实现水仙花数的寻找与实现斐波那契数列
一.水仙花数 1.啥是水仙花数? 水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) 2.利用JS实现对水 ...
- Java之FilenameFilter接口
FilenameFilter接口:是用于过滤文件的 要实现的是accept方法 实例代码: 1,匿名类实现FilenameFilter-–过滤指定类型文件 package File类过滤器; impo ...
- Linux命令不熟悉(记录)
1.回到上一次操作的目录 cd - 2.rz打开上传文件 rz 3.下载某个文件 wget httpdownload 4.根据名字查找文件 find / -name mysql 5.通配符删除 rm ...
- c++ 库函数返回的字符串指针是否需要手动释放
#include <stdio.h> char * tmpnam(char *s); tmpnam函数返回一个不与任何已存在文件同名的有效文件名,如果字符串s不为空,文件名也会写入它.对t ...
- Hadoop 2.7 伪分布式环境搭建
1.安装环境 ①.一台Linux CentOS6.7 系统 hostname ipaddress subnet mask ...
- js删除 object中的空值
var data = { a: 'a', b: '' } 删除 b和''的配对, /** * Delete all null (or undefined) properties from an obj ...
- Android 设计模式实战之关于封装计费代码库的策略模式详谈
写在之前 这周生活上出现了很多的不如意,从周一开始就觉得哪里出现了问题,然后就是各种烦躁的情绪,后来事情还真是如预感的那样发生了,很是心痛,但也无可奈何,希望大家都好好珍惜自己身边的人:友人,亲人,家 ...
- python中的字符串编码
获取字符串的编码类型: encodingdate = chardet.detect(str) chardet用于实现字符串的编码类型检测 chardet的下载地址:https://pypi.pytho ...
- [leetcode-541-Reverse String II]
Given a string and an integer k, you need to reverse the first k characters for every 2k characters ...