字段描述符包含了字段的定义,下面是实例化一个字段时的属性:

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的更多相关文章

  1. odoo view field option, action flage 参数

    options JSON object specifying configuration option for the field's widget (including default widget ...

  2. Odoo : ORM API

    记录集 model的数据是通过数据集合的形式来使用的,定义在model里的函数执行时它们的self变量也是一个数据集合 class AModel(models.Model): _name = 'a.m ...

  3. 【odoo14】第六章、管理模块数据

    本章代码可在原作者github下载 使用外部ID及命名空间 外部ID及XML ID用于标记记录.到目前为止,我们在视图.菜单及动作中接触了XML IDs.本节我们将进一步了解什么是XML ID. 步骤 ...

  4. odoo开发笔记 -- 异常处理in resolve_deps field = model

    场景描述: 更新代码,重启服务服务后,odoo后台报错,提示关键字:in resolve_deps field = model._fields[fname]  KeyError: 'entry_id' ...

  5. Odoo field字段标签属性详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826356.html 标签属性 1) name:标识字段名称 2)string:标签文本,如果我们想要覆盖 ...

  6. odoo模块

    odoo模块包括 业务对象,web控制器,数据文件,前面2个是Python模块,而数据文件则是odoo特有的文件,例如,odoo数据文件,web数据.这些数据文件在 __odoo__.py 进行定义, ...

  7. 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. ...

  8. Odoo Many2many 指定默认分组过滤

    在odoo里如果想单击某个菜单打开的页面是自带过滤的,可以在打开菜单的动作中添加默认过滤来实现,今天有同学在群里问,如何在Many2many的添加更多的弹出窗口中添加类似的过滤,其实是非常非常简单的, ...

  9. Defining custom settings in Odoo

    Unfortunately Odoo documentation doesn’t seem to include any information about adding new configurat ...

随机推荐

  1. index.js:13 Uncaught TypeError: Cannot read property 'split' of undefined

    使用 webpack 编译 Vue 项目时出现报错: index.js:13 Uncaught TypeError: Cannot read property 'split' of undefined ...

  2. 向EXECL文件中导入数据的同时插入图片

    因为项目需要在导出数据到EXECL文档的同时还需要导出图片进去,在处理是遇到的一些问题,在此记录一下. 首先代码写好之后放测试服务器上去执行的时候报错了,报检索 COM 类工厂中 CLSID 为 {0 ...

  3. 利用document的readyState去实现页面加载中的效果

    打开新的网页时,为了增强友好性体验,告知用户网页正在加载数据需要呈现一个"页面加载中"之类的提示,只需要利用document就可以实现. 实现示例代码如下: <style&g ...

  4. (转)Javascript的DOM操作 - 性能优化

    转载:https://my.oschina.net/blogshi/blog/198910 摘要: 想稍微系统的说说对于DOM的操作,把Javascript和jQuery常用操作DOM的内容归纳成思维 ...

  5. ecshop收货地址货到付款修改

    用户选择某些地址时,支付方式里则可以依据此地址来对货到付款选项进行显示或隐藏.目前仅与顺丰合作,以顺丰提供的数据为准. 使用到的数据库分别如下: ecs_region//地方数据,PRIMARY KE ...

  6. GIS与水文分析(1)GIS与水文学

    GIS与水文分析(1)GIS与水文学 对于大部分GIS从业人员或者利用GIS作为研究方向的人员来说,水文学过于专业,更偏重于理论化,很难从GIS的角度来模拟和分析水文的过程.这其实是个普遍性的问题,任 ...

  7. js删除 object中的空值

    var data = { a: 'a', b: '' } 删除 b和''的配对, /** * Delete all null (or undefined) properties from an obj ...

  8. Scrapy爬虫大战京东商城

    Scrapy爬虫大战京东商城 引言 上一篇已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇 代码详解 首先应该构造请求,这里使用scrapy.Request,这个方法默认调 ...

  9. Linux命令 文件的建立移动删除

    cat [功能说明] 建立文件  #cat命令用来串接文件或显示文件内容的但是如果从标准输入设备中读入数据并将结果重定向到一个新的文件中,则可以到达建立新文件的目的.Cat命令只能在编辑新的文件时只能 ...

  10. vue2.0实现分页组件

    最近使用vue2.0重构项目, 需要实现一个分页的表格, 没有找到合适的组件, 就自己写了一个, 效果如下: 该项目是使用 vue-cli搭建的, 如果你的项目中没有使用webpack,请根据代码自己 ...