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

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 Falsedef _inverse_upper(self):for rec in self:rec.name = rec.upper.lower() if rec.upper else Falsedef _search_upper(self, operator, value):if operator == 'like':operator = 'ilike'return [('name', operator, value)]

这个计算方法必须为被调用记录集合中的所有记录进行指定这个字段(为每个记录这个字段派遣一个字段值,通过计算得到)。计算方法必须应用一个装饰器:meth:`openerp.api.depends` 来指定字段的依赖用于计算; 这些依赖用于决定什么时候重新计算这个字段。重新计算是自动的保证缓存和数据库的一致性。注意:同一方法可用于多个字段,你仅仅须要在这个方法中对所有给定的字段进行派遣。对于所有字段,这个方法将会触发一次。默认情况下,计算字段不存储在数据库中,进行即时运算。设置,store=True会将字段值存储在数据库中,存储字段的优点是在该字段上的搜索由数据库本身完成,缺点是当这个字段被重新计算的时候,它需要数据库更新。反转方法,计算方法的逆运算: 你必须在字段的依赖上做些必要的变化,以能够使得计算结构符合期望的值。注意:没有逆运算方法的计算字段默认情况下为只读的。在做模型上做一个实际的搜索之前处理域时,这个搜索方法被触发。它必须返回一个域(等价于这样条件:【field operator value】)

Related fieldsRelated字段的值由关系字段序列给出,在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")

转载于:https://www.cnblogs.com/baishoujing/p/6385275.html

Odoo之Field相关推荐

  1. Odoo二次开发------Odoo常用字段类型

    版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处. 大家好.本篇文章主要讲述的内容是Odoo常用字段类型. 本文将从Odoo模型概述.Odoo的常规字段.自动字段和保留字段.常用字段属性. ...

  2. odoo10 ORM操作

    非常有用的odoo ORM参考手册:  odoo V10中文参考手册(一:ORM API     (部分内容没有更新到这里) 坑! 如果数据表已存在记录, 当新增字段时, 填了required=Tru ...

  3. odoo10参考系列--ORM API 三(字段、继承与扩展、域和更新到新API)

    字段 基础字段 class odoo.fields.Field(string=<object object>, **kwargs) 字段描述符包含字段定义,并管理记录中相应字段的访问和分配 ...

  4. Odoo | 基础 | 初识系统-ORM之字段属性对象Field

    字段属性对象Field Model的字段属性对应数据表中的相应字段,pg表中不同的字段有不同类型,Odoo也为其封装了相应的类型对象 Field类型的属性: type = None 字段类型 rela ...

  5. [精]Odoo 8.0深入浅出开发教程-模块开发基础

    參考资料点击这里. 构建Odoo模块 模块组成 业务对象 业务对象声明为Python类, 由Odoo自己主动加载. 数据文件 XML或CSV文件格式, 在当中声明了元数据(视图或工作流).配置数据(模 ...

  6. ODOO权限管理,在两个方面设置权限

    转载参考https://zhuanlan.zhihu.com/p/29130388 在odoo中新建两个用户user1,user2 新建用户 建完了用户,记得编辑用户,设置密码. 然后以user1用户 ...

  7. odoo中的序列(自动增长的序列以及有条件的序列,ir.sequence)

    1.模块下面的data文件夹里面新建一个XML文件 如图:main_data_seq.xml <?xml version="1.0" encoding="utf-8 ...

  8. 2.odoo13的学习(odoo中的模型、模型类属性、字段属性等)

    目录 1.什么是模型 2.模型的定义 2.1 模型的位置 2.2 初始模型类 2.3 模型类的常用属性 2.4 模型类字段的属性参数 2.5 模型类创建好后,odoo默认创建一些字段 2.6 初始模型 ...

  9. 4.odoo13的学习(odoo中的xml)

    目录 1.使用xml插入数据库数据 2.data的定义 3.引入xml 4.修改引入data的xml,修改后让其生效 5.后台界面的操作 1.使用xml插入数据库数据 给数据库中插入模块的预置数据或者 ...

最新文章

  1. 【C#】集合_哈希表_字典_泛型_文件
  2. 单调栈 or 线段树扫描线 ---- E. Delete a Segment [单调栈+二分] [扫描线处理空白位置的技巧乘2]
  3. 蓝桥杯-未名湖边的烦恼(java)
  4. java中junit_【Java】Junit快速入门
  5. 服务超时 — 基本原理
  6. 【恋上数据结构】递归(函数调用过程、斐波那契数列、上楼梯、汉诺塔、递归转非递归、尾调用)
  7. 计算机发展史较为重大的事件,图说:15件计算机发展史中的重大事件(7)
  8. 【论文写作】SSM校园招聘系统如何写摘要部分
  9. HBuilderx中编译sass文件
  10. 在GitHub上学黑客 --- 黑客成长技术清单
  11. Java具体可以做什么?
  12. HTML学生个人网站作业设计:电影网站设计——橙色国外电影(13页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  13. 2016中期中国云计算市场报告
  14. linux编译lilo,linux中LILO及GRUB配置实例
  15. 倪光南:解读中国ISV生存现状
  16. 简单定制统信UOS镜像的方法
  17. 【ORACLE数据库体系架构】
  18. Visual Studio 中使用万能头文件 #include <bits/stdc++.h>
  19. 万用表的使用方法,焊接
  20. CSS - Tooltip-arrow 绘制三角形

热门文章

  1. C 函数别名简单记录
  2. 不同品牌android手机ui,各大安卓手机品牌里,系统UI设计对比,谁赢了?
  3. php数组合并如何不覆盖,php如何实现合并数组并且不覆盖重复值
  4. 怎样用计算机进入手机驱动程序,手机驱动怎么安装?
  5. Android 无法监听安装,Android关于apk安装成功广播监听
  6. matlab 堆叠状柱状图
  7. ECEF rectangular coordinate system(ECEF直角坐标系)
  8. EOJ Monthly 2018.11 D. 猜价格
  9. 5.spring boot使用FastJson解析JSON数据
  10. MapReduce过程详细分析