罗列一些Odoo中的字段属性,基本包含大部分的属性。

常用字段属性

平平无奇常用字段属性

string:字段的标题,在UI视图标签中使用。它是可选项,如未设置,会通过首字母大写及将空格替换成为下划线来从字段名获取标签。

required:强制字段在用户界面中必填,默认为False。

readonly:让该字段在用户界面为只读,默认为False。

index:在设置为True时,为该字段创建一个数据库索引,有时可供更快搜索使用。

help:在UI提示工具中显示的解释性文本。

groups:让字段仅对安全组可见。它是一个包含安全组的XML ID逗号分隔列表的一个字符串。

store:让计算字段等原本不保存的数据存储在数据库中,设置这个可以使计算字段可被搜索。

copy:标识在复制记录时是否拷贝字段值。对于非关系型字段和Many2one它的默认值是True,对One2many和计算字段它的值为False。

default

默认值,也可以是一个用于计算默认值的函数,例如default=_compute_default, _compute_default是模型中定义在字段前一个的方法。

related

关联属性,将相关的字段变成关联字段来访问值;

publisher_id = fields.Many2one("res.partner", string="Publisher", ondelete="set null", index=True)
publisher_city = fields.Char(string="Publisher City", related="publisher_id.city")

关联字段实际上是计算字段。它们仅提供⼀种⽅便的快捷语法来从关联模型读取字段值。作为⼀个计算字段,这意味着也可以使⽤store属性。

states

states允许用户界面依据state字段的值来动态设置readonly,required和invisible的值。因此,它要求存在一个state字段并在表单视图中使用(即使是隐藏的)。state属性的名称是在odoo硬编码且无法修改的。

compute

计算字段,默认为只读,需要定义一个函数以根据情况动态的生成该字段的值。并且该字段默认不能被搜索到。

计算字段在运⾏时动态计算,默认存储,可设置store=True将计算字段存储在数据库,并且此时可被搜索到;ORM使⽤缓存来避免在每次访问值时的低效重计算。它使⽤@depends装饰器来监测缓存值何时应置为⽆效并重新计算,因此, 它需要知道所依赖的其它字段。

date_release = fields.Date(string="Release Date")
# 计算字段,及让计算字段可编辑和可搜索
age_days = fields.Float(string="Days Since Release", compute="_compute_age", inverse="_inverse_age", search="_search_age", store=False, compute_sudo=False) # compute_sudo 用于需要提权来执行计算的情况 # 值计算逻辑的方法
@api.depends("date_release")
def _compute_age(self):
today = fields.Date.today()
for book in self.filtered("date_release"): # 筛选有 date_release 的书籍
delta = today - book.date_release
book.age_days = delta.days

关于计算字段的可编辑与可搜索可查看我的另一篇文章:odoo之技巧集合一-计算字段的可编辑与可搜索

ondelete

关联删除属性,决定在关联记录删除时执行什么操作。默认值为"set null",所有值如下:

  • "set null":会将该字段置为空值;
  • "restrice":会阻止关联字段记录的删除;
  • "cascade":导致关联的记录同样被删除;

示例:

partner_id = fields.Many2one("res.partner", ondelete="cascade")

context

上下文属性,context对关联字段有效,在点击字段进入关联视图时context会向客户端上下文添加变量。例如,我们可以使用它来为新纪录设置通过该视图创建的默认值。

domain

过滤属性,对关联字段有效,用来限制可用的关联记录列表的搜索过滤器。

示例:

category_id = fields.Many2one("library.book.category", string="Category", domain=[('id', 'in', ['4', '5', '6'])])

digits

用于Float字段并设置该字段的精度值,精度由总位数和小数位数对来定义。

length = fields.Float(string="长度", digits=(8, 3))。# 总长度为8位,小数位占3位

关联字段属性

共有属性

comodel_name

目标模型标识符,对所有关联字段强制使用,可以占位定义而无需使用关键字;

One2many,Many2many

limit

它在One2many和Many2many中使用,对在用户界面级别上用于记录读取的数量这是可选限制;当设置后,最多只能添加和显示n条数据。

author_ids = fields.Many2many("res.partner", string="Authors", limit=10)

One2many

inverse_name

它仅应用于One2many,是反向Many2one关联的目标模型中的字段名;

Many2many

  1. relation:用于Many2many字段。many2many关联表的名称默认使用两个关联模型名按字母排序加上一个_rel后缀来创建。但我们可以使用relation属性来进行覆盖。
  2. column1:这是连接这个模型的关联表中的Many2one字段的名称
  3. column2:这是在关联数据表中连接comodel的Many2one字段的名称

其他字段属性

其他较少使用的字段

translate

在设置为True时,让字段可翻译,它可根据用户的界面语言保持不同值。

company_dependent

让该字段根据公司存储不同值。

strip_style

和sanitize配合使用,见下个属性。

sanitize

用于Html字段并去除包含不安全标签的内容。使用它会对输入进行全局清理。如果需要更精细的控制,可以使用一些关键字,仅在启用sanitize时生效。

  • sanitize_tags=True删除⽩名单列表以外的标签(默认项)
  • sanitize_attributes=True删除⽩名单列表以外的标签属性
  • sanitize_style=True删除⽩名单列表以外的样式属性
  • strip_style=True删除所有样式元素
  • strip_class=True删除所有class属性

这⾥所提及的各个⽩名单列表在odoo/tools/mail.py中定义。

odoo字段属性列举的更多相关文章

  1. odoo字段属性

    以下为可用的非关联字段类型以及其对应的位置参数: Char(string)是一个单行文本,唯一位置参数是string字段标签. Text(string)是一个多行文本,唯一位置参数是string字段标 ...

  2. ORM研究3 - odoo fields常用的字段属性

    之前我们已经讲解了odoo ORM中的一些对字段常用的API操作方法,今天我们继续研究一下Odoo orm中字段的一些通用属性字段的使用,学会它们可以为自己创建数据映射并使用有更好的帮助. 通用字段属 ...

  3. mysql的数据类型和字段属性

    本文内容: 数据类型 数值类型 整数型 浮点型 定点型 日期时间类型 字符串类型 补充: 显示宽度与zerofll 记录长度 字段属性 空\不为空值:NULL.NOT NULL 主键:primary ...

  4. 如何使用odoo的compute方法,自动计算odoo字段

    前言 在odoo的ORM创建数据字段的过程中,我们会经常需要定义一些字段用来计算某一些字段只和或其他计算结果. 今天介绍一个很好用的方法compute计算属性,这个方法其实是属于写在odoo fiel ...

  5. 实例级别和类级别的static、构造函数、字段属性的简单介绍

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实例级别 ...

  6. 1.4.2 solr字段类型--(1.4.2.7)字段属性使用案例

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  7. mysql学习(五)-字段属性

    字段属性: unsigned: 无符号类型,只能修饰数值类型: create table if not exists t1(id int unsigned); zerofill:前端填0 //只能修饰 ...

  8. MySQL (三)-- 字段属性、索引、关系、范式、逆规范化

    1 字段属性 主键.唯一键和自增长. 1.1 主键 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复. 一张表只能有最多一个主键. 1.1 ...

  9. ASP.NET Core教程【三】实体字段属性、链接标签、并发数据异常、文件上传及读取

    前文索引:ASP.NET Core教程[二]从保存数据看Razor Page的特有属性与服务端验证ASP.NET Core教程[一]关于Razor Page的知识 实体字段属性 再来看看我们的实体类 ...

随机推荐

  1. 后端程序员之路 45、nginx CORS 跨域

    在提供api给其它应用使用时,有时我们会要限制它的跨域使用,而有时,我们又要用CORS来打破AJAX只能同源使用的限制 跨域资源共享 CORS 详解 - 阮一峰的网络日志http://www.ruan ...

  2. powerdesigner 16.6破解版下载,支持hive,数据模型hql导出

    powerdesigner 16是一款业内领先的建模工具,是一款开发人员常用的数据库建模工具. 在大数据数据仓库建设过程中,离线数仓往往以hive为基础,但数仓建模过程中老版本不支持hive,这个模型 ...

  3. JDBC概要

    JDBC基础应用 JDBC是Java连接数据库的一套接口,可以让我们方便的在Java中使用数据库.掌握JDBC的使用是Java开发的基本功. 预备工作 导入jar包.根据使用的数据库软件导入相应的ja ...

  4. mysql-canal-rabbitmq 安装部署教程

    原文 1.1. 开启 MySQL 的 binlog 日志 修改 my.cnf 或 my.ini(windows), 添加配置项: # binlog 日志存放路径 log-bin=D:\env\mysq ...

  5. groovy-map.each{}

    ConfigDetail postEdiUrl(TtxSession sess, String code) { return cdSvc.getByRecordTypeAndIdentifier(se ...

  6. 【测试技术分享】在Linux下安装Python3

    导语:Python在linux环境下没有安装包,同时很多系统没有Python环境,即使有Python环境也是Python2.x,顺应时代,现在开始进行安装Python3的教程. 一.安装依赖 sudo ...

  7. 从Android手机的抢红包插件说起

    前语 最近,Android手机上的手机管家更新了新版本,提供了红包闹钟功能,只要有微信红包或者QQ红包,就会自动提醒.恰逢最近又在做UI自动化的工作,使用到UI Automator框架.几行代码,就可 ...

  8. IDEA中通过正则表达式批量替换空白行

    快捷键Ctrl+r 填入^\s*\n,勾选Regex,Replace all

  9. 浅析MyBatis(四):全自动写代码的MyBatis逆向工程

    在前面几篇文章中,笔者介绍了 MyBatis 的运行流程,在此基础上简单介绍了手写 MyBatis 简易框架与自定义 MyBatis 插件的步骤,相信大家对于 MyBatis 框架的使用流程已经游刃有 ...

  10. java例题_50 题目:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成 绩),计算出平均成绩,将原有的数据和计算出的平均分数存放在磁盘文件"stud"中。

    1 /*50 [程序 50 文件 IO] 2 题目:有五个学生,每个学生有 3 门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成 3 绩),计算出平均成绩,将原有的数据和计算出的平均分数存放 ...