odoo 12: 字段(Fields)
1. 基础字段
class odoo.fields.Field(string=, **kwargs)
(1)基本字段类型
字段类型 | 说明 |
---|---|
Char(string) | 是一个单行文本,唯一位置参数是string字段标签。 |
Text(string) | 是一个多行文本,唯一位置参数是string字段标签。 |
Selection(selection, string) | 是一个下拉选择列表。选项位置参数是一个 [(‘value’, ‘Title’),] 元组列表。元组第一个元素是存储在数据库中的值,第二个元素是展示在用户界面中的描述。该列表可由其它模块使用selection_add关键字参数扩展。 |
Html(string) | 存储为文本字段,但有针对用户界面 HTML 内容展示的特殊处理。出于安全考虑,该字段会被清洗,但清洗行为可被重载。 |
Integer(string) | 仅需字段标题字符串参数。 |
Float(string, digits) | 带有第二个可选参数digits,该字段是一个指定字段精度的(x,y)元组,x 是数字总长,y 是小数位。 |
Monetary(string, currency_field) | 与浮点字段类似,但带有货币的特殊处理。第二个参数currency_field用于存储所使用货币,默认应传入currency_id字段。 |
Date(string)和Datetime(string) | 字段只需一个字符串文本位置参数。 |
Boolean(string) | 的值为True 或False,可传入一个字符串文本位置参数。 |
Binary(string) | 存储文件类二进制文件,只需一个字符串文本位置参数。它可由Python使用 base64编码字符串进行处理。 |
(2)特殊字段属性
属性 | 说明 |
---|---|
name | (通常为 Char)默认作为记录的显示名称。通过是一个 Char,但也可以是 Text 或Many2one字段类型。用作显示名的字段可修改为_rec_name模型属性。 |
active | (Boolean型)允许我们关闭记录。带有active=False的记录会自动从查询中排除掉。可在当前上下文中添加{‘active_test’: False} 来关闭这一自动过滤。可用作记录存档或假删除(soft delete)。 |
state | (Selection类型) 表示记录生命周期的基本状态。它允许使用states字段属性来根据记录状态以具备不同的 UI 行为。动态修改视图:字段可在特定记录状态下变为readonly, required或invisible。 |
parent_id和parent_path Integer | (Char型)对于父子层级关系具有特殊意义。本文后续会进行讨论。 |
(3)常用字段属性
属性 | 说明 |
---|---|
string | 是字段的默认标签,在用户界面中使用。如未传入,ORM获取类中的字段名称大写作为默认名称 |
default | 设置字段默认值。可以是具体值(如 active字段中的default=True),或是可调用引用,有名函数或匿名函数均可。 |
help | 提供 UI 中鼠标悬停字段向用户显示的提示文本 |
readonly | (布尔值,默认为False)readonly=True会使用户界面中的字段默认不可编辑。仅针对用户界面设置。 |
required | (布尔值,默认为False)required=True使得用户界面中字段默认必填 |
index | (布尔值,默认为False)index=True为字段添加数据库索引,让搜索更快速,但同时也会部分降低写操作速度。 |
copy | copy=False让字段在使用 ORM copy()方法复制字段时忽略该字段。除 to-many 关联字段外,其它字段值默认会被复制。 |
groups | groups可限制字段仅对一些组可访问并可见。值为逗号分隔的安全组XML ID列表,如groups=’base.group_user,base.group_system’。 |
states | 传入依赖 state字段值的 UI 属性的字典映射值。可用属性有readonly, required和invisible,如states={‘done’:[(‘readonly’,True)]}。 |
oldname | (string) 该字段的先前名称,以便ORM可以在迁移时自动重命名 |
(4)文本字段(Char, Text和Html)特有属性
属性 | 说明 |
---|---|
size (Char) | 设置最大允许尺寸。无特殊原因建议不要使用,例如可用于带有最大允许长度的社保账号。 |
translate | 使用的字段内容可翻译,带有针对不同语言的不同值。 |
trim | (默认值为 True),启动在网络客户端中自动去除周围的空格。可通过设置trim=false来取消。 |
(5)示例代码
class Book(models.Model):
...# String fieldsname = fields.Char('Title', required=True)isbn = fields.Char('ISBN')book_type = fields.Selection([('paper', 'Paperback'),('hard', 'Hardcover'),('electronic', 'Electronic'),('other', 'Other')],'Type')notes = fields.Text('Internal Notes')descr = fields.Html('Description')# Numeric fields:copies = fields.Integer(default=1)avg_rating = fields.Float('Average Rating', (3,2))price = fields.Monetary('Price', 'currency_id')currency_id = fields.Many2one('res.currency') # price helper# Date and time fieldsdate_published = fields.Date()last_borrow_date = fields.Datetime('Last Borrowed On',default=lambda self: fields.Datetime.now())# Other fieldsactive = fields.Boolean('Active?', default=True)image = fields.Binary('Cover')
2. 关系字段
当涉及到的不同模型间的数据时,使用关联字段来建立关系。
(1)字段类型
多对一:Many2one(comodel_name, string)
属性 | 说明 |
---|---|
comodel_name | 关联模型的名称(字符串) |
domain | 在客户端(domain或字符串)上设置候选值的可选域 |
context | 处理该字段时在客户端使用的可选上下文(字典) |
ondelete | 删除关联记录时执行的操作;可选的值是: ‘set null’(置空), ‘restrict’(抛出错误,阻止删除), ‘cascade’(同时删除当前记录和关联记录) |
auto_join | 是否在搜索该字段时生成JOINs(布尔值,默认为False) |
delegate | 将其设置为True可以从当前模型访问目标模型的字段(对应于_inherits) |
string | 字段标签 |
一对多:One2many(comodel_name, inverse_name, string)
属性 | 说明 |
---|---|
comodel_name | 关联模型的名称(字符串) |
inverse_name | comodel_name中指向Many2one的字段,指向当前记录(字符串) |
domain | 在客户端(domain或字符串)上设置候选值的可选域 |
context | 处理该字段时在客户端使用的可选上下文(字典) |
auto_join | 是否在搜索该字段时生成JOINs(布尔值,默认为False) |
limit | 读取记录时使用的可选限制(整数) |
string | 字段标签 |
多对多:Many2many(comodel_name)
属性 | 说明 |
---|---|
comodel_name | 关联模型的名称(字符串) |
relation | 存储数据库中关系的表的可选名称(字符串) |
column1 | 关联表中字段名称(字符串) |
column2 | 关联表中字段名称(字符串) |
domain | 在客户端(domain或字符串)上设置候选值的可选域 |
context | 处理该字段时在客户端使用的可选上下文(字典) |
limit | 读取记录时使用的可选限制(整数) |
string | 字段标签 |
(2)操作代码
一对多:One2many
属性 | 说明 |
---|---|
(0, 0,{ values }) | 根据values里面的信息新建一个记录 |
(1,ID,{values}) | 更新id=ID的记录(对id=ID的执行write 写入values里面的数据) |
(2,ID) | 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系) |
多对多:Many2many
属性 | 说明 |
---|---|
(0,0,{values}) | 根据values里面的信息新建一个记录。 |
(1,ID,{values}) | 更新id=ID的记录(写入values里面的数据) |
(2,ID) | 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系) |
(3,ID) | 切断主从数据的链接关系但是不删除这个数据 |
(4,ID) | 为id=ID的数据添加主从链接关系。 |
(5) | 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID) |
(6,0,[IDs]) | 用IDs里面的记录替换原来的记录(就是先执行 (5) 再执行循环IDs执行 (4,ID)) |
(3)示例代码
class Book(models.Model): #书籍
...#出版商publisher_id = fields.Many2one('res.partner', # 关联模型string='Publisher')#作者author_ids = fields.Many2many('res.partner', # 关联模型string='Author')
class Partner(models.Model): #联系人模型
..._inherit = 'res.partner'#出版过的书籍published_book_ids = fields.One2many('library.book', # 关联模型'publisher_id', # 关联模型中所指向的字段string='Published Books')#作者的书籍book_ids = fields.Many2many('library.book', string='Authored Books')
<field name="users" eval="[(6,0,[ref('base.user_root')])]"/>
3.计算字段
计算字段,提供由函数计算出值的属性。
属性 | 说明 |
---|---|
compute | 计算字段的方法的名称 |
inverse | 反转字段的方法,并写入(可选) |
search | 在字段上实现搜索的方法的名称(可选) |
store | 字段是否存储在数据库中(布尔值,默认情况下在计算字段上为False) |
compute_sudo | 是否应将该字段重新计算为超级用户以绕过访问权限(布尔值,默认为False) |
related | 通过关联模型的字段可在模型中直接可用,并且可通过点号标记法直接访问 |
class Book(models.Model):
...#计算字段的写法publisher_country_id = fields.Many2one('res.country', string='Publisher Country',compute='_compute_publisher_country'# store = False, # 默认不在数据库中存储inverse='_inverse_publisher_country',search='_search_publisher_country',)@api.depends('publisher_id.country_id')def _compute_publisher_country(self):for book in self:book.publisher_country_id = book.publisher_id.country_iddef _inverse_publisher_country(self):for book in self:book.publisher_id.country_id = book.publisher_country_iddef _search_publisher_country(self, opearator, value):return [('publisher_id.country_id', operator, value)]#关联字段的写法publisher_country_id = fields.Many2one('res.country', string='Publisher Country',related='publisher_id.country_id',)
参考文章:
https://alanhou.org/odoo12-structuring-data/
https://www.odoo.com/documentation/12.0/reference/orm.html#basic-fields
odoo 12: 字段(Fields)相关推荐
- Odoo 12开发之后台视图 – 设计用户界面
Odoo 12开发之后台视图 – 设计用户界面 一·菜单项 # 菜单项形成一个层级结构,最顶层结构 # name 是展示在用户界面中的菜单标题 # action 是点击菜单时运行的窗口 # paren ...
- Odoo二次开发------Odoo常用字段类型
版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处. 大家好.本篇文章主要讲述的内容是Odoo常用字段类型. 本文将从Odoo模型概述.Odoo的常规字段.自动字段和保留字段.常用字段属性. ...
- ElasticSearch 6.x 学习笔记:12.字段类型
ElasticSearch 6.x 学习笔记:12.字段类型 欢迎转载. https://blog.csdn.net/chengyuqiang/article/details/79048800 12. ...
- odoo 的字段。orm对象
OpenERP ORM 对象方法列表 OpenERP对象支持的字段类型有,基础类型:char, text, boolean, integer, float, date, time, datetime, ...
- 【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )
文章目录 一.AST 语法树分析 一.AST 语法树分析 在上一篇博客 [Groovy]编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 ) ...
- 用pycharm搭建odoo 12, 11,10 开发调试环境
用pycharm搭建odoo 12, 11,10 开发调试环境 个人认为在windows平台下Pycharm 是最好的 odoo开发工具, 配置简单,操作简便,界面清爽,支持远程调试python,ja ...
- 文档(Documents), 字段(Fields), 及模式设计(Schema Design)
1. 文档(Documents), 字段(Fields), 及模式设计(Schema Design) 1.1 概览 1.1.1 Solr的Schema文件 Solr在schema文件中存储它需要知道的 ...
- eclipse文档注释设置、文件(Files)注释标签、类型(Types)注释标签(类的注释)、字段(Fields)注释标签、构造函数(Constructor)标签
文章目录 1.文件(Files)注释标签 2.类型(Types)注释标签(类的注释) 3.字段(Fields)注释标签 4.构造函数(Constructor)标签 5.方法(Methods)标签 6. ...
- 全球排名第一的免费开源ERP Odoo 12产品发布会北京站开始报名
Odoo V12 产品(北京)发布会 暨企业数字化转型论坛 快速报名通道:http://odoochina.mikecrm.com/uG8nNu4 随着新版本Odoo 12的发布,开源智造(OSCG. ...
- odoo 12 : 附件(ir.attachment)——同一模型多个附件字段
一.问题 一个模型(Model)中,添加多个可上传附件(ir.attachment)的字段 二.解决方案 模型:Amodel.py class Amodel(models.Model):--first ...
最新文章
- “cyl projection cannot cross pole” 解决方法
- RocketMQ 一行代码造成大量消息丢失
- struts2中struts.xml的http://struts.apache.org/dtds/struts-2.3.dtd文件路径
- 欧拉定理扩展欧拉定理(证明)
- L1-041 寻找250
- 企业级 CICD 工具部署 Serverless 应用的落地实践
- neo4j cypher_Neo4j:使用Cypher生成实时建议
- 前端学习(2630):git安装包下载
- Python的Pexpect详解 [图片]
- JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用 1
- ORACLE语句两表相减,Oracle中两个date相减
- Spring AOP动态代理原理与实现方式
- 如何将浮点数点左边的数每三位添加一个逗号,如12000000.11转化为『12,000,000.11』...
- 姜启源《数学模型》第12章:马氏链模型
- PDF编辑器哪个好,怎么在PDF中添加图片
- 使用Requests爬取网页图片并保存
- 生成树协议(一)STP协议原理简介:广播风暴、MAC地址表震荡实验、STP工作原理、BPDU简介、STP故障处理
- 高通Android display分析【转】
- 华为二手价格表(最新2022.2.16)
- 查看PFX证书的信息
热门文章
- 汇编语言程序设计51单片机
- 云杰恒指:期货交易操盘手是怎样的体验?
- 应该像许三多学习的职业态度!
- 深度学习中Batch size对训练效果的影响
- 安卓开发学习之锁屏的实现
- windows10下安装Vue.js的方法
- 网络安全实战之植入后门程序
- 使用pip出现报错:Could not find a version that satisfies the...No matching distribution distributio...
- 交通分析小区TAZ生成——以武汉市为例
- Windows下修改本机域名localhost