当前位置: 首页 > news >正文

odoo18中模型的常用字段类型

字段的公共属性:
在这里插入图片描述

Char

字符类型,对应数据库中varchar类型,除了通用类型外接收另外两个参数:

size: 字符长度,超出的长度将被截断
trim: 默认True,是否字段值应该被去空白。

Text

文本类型,对应数据库中的text类型,不限长度,没有额外的参数。

Integer

整数类型, 对应数据库中的int4类型

Float

浮点数类型, 兼容数据库中int4, numberic, float8类型.

Float类型可以使用digits属性来指定小数的精度, 例如:

price = fields.Float("价格", digits=(16,3))

digits这里是一个元组,16代表整个数据的长度, 3代表小数的位数. 另外, digits也可以接收一个用来描述系统精度的文本字符串.例如,系统中预置的精度变量名称Discount, 那么,上述定义也可以写成这个样子*:

price = fields.Float("价格", digits="Discount")

Float类型的字段也可以显示为货币类型,方法是在xml中使用monetary小部件:

<field name="amount_undiscounted" string="Subtotal" widget="monetary"/>

Html

Html类型,用于存储一段HTML代码,对应数据库中的text类型,接收下面几个参数:

  • sanitize:是否过滤安全字符(默认True)
  • sanitize_tags: 是否过滤的html标签(只接收白名单列表标签,默认True)
  • sanitize_attributes: 是否过滤的html属性(只接收白名单列表属性,默认True)
  • sanitize_style: 是否过滤style属性(默认False)
  • strip_style: 是否去除style属性中的空白(默认False)
  • strip_classes:是否去除class属性中的空白(默认False)

Date

日期类型,对应于数据库中的date类型,该字段包括如下几个特有方法:

  • today: 当前日期
  • context_today: 返回客户端时区的当前时间
  • to_date: 将时间值转换为date类型的时间
  • to_string: 将时间值转为文本

例如我们想要给某个日期字段设置默认的属性为当天,那么可以像下面这样写:

date_start = fields.Date("开始日期",default=fields.Date.today())

Datetime

时间类型,对应于数据库中的timestamp类型,该字段包括如下几个特有方法:

  • now: 当前时间
  • today: 当前日期
  • context_timestamp: 客户端时区的当前时间戳
  • to_datetime:将时间值转换成datetime类型
  • to_string: 将时间值转成文本

假如我们想要给某个时间字段设置默认当前时间,那么可以像下面这样写:

date_start = fields.Datetime("开始时间",default=fields.Datetime.now())

Binary

二进制文件类型,接收三个参数:

  • prefetch: 默认False
  • context_dependent:默认True
  • attachment:默认True,是否作为附件存储

二进制文件作为附件存储时存在服务器指定的文件夹路径中,否则存在数据库中,对应的数据库类型为bytea.

图片类型的字段在odoo中亦是使用Binary字段存储的,只不过视图渲染时使用了image部件。

二进制字段通常以base64编码的形式存储在数据库中,因此在展示时,需要将base64进行解码输出。另外,二进制文件在form表单中只读状态下表现为下载按钮,但不包含原始的文件名。如果想要显示文件名,需要使用另外一字段将文件名存储起来。可参考如下代码:

<field name="xls" filename="xls_name"/>
<field name="xls_name" invisible="1"/>

Selection

下拉选择类型,多选一类型,不同于Many2one类型,Selection类型在数据库中对应的类型是int4或varchar类型。

除了通用的属性,另外接收2个参数:

  • selection: 可选的范围值,值和名称组成的元组列表。
  • validate: 默认True,是否写入时校验。
  • Selection包含如下的属性或方法:

Monetary

odoo中对于货币类型的数值单独做了一个字段用来处理,这个字段就是Monetary。Monetary的基本使用方法同Float类型一致,不同的是Monetary的值会更精确,同时Monetary的值还依赖于当前计算环境的币种。

默认情况下要使用Monetary字段,需要在当前模型中同时新增一个currency_id的Many2one的字段,该字段表明本模型使用的货币类型(res.currency)。

例如:

currency_id = fields.Monetary("res.currency","货币")
amount = fields.Monetary("小计")

在视图中,如果需要带上货币符号,我们可以使用monetary小部件:

<field name="amount_total" widget="monetary" options="{'currency_field': 'currency_id'}"/>

如果不想使用默认的currency_id字段,可以在options中传入指定的货币类型字段名。

Many2one

多对一类型,对应于数据库中的类型是int4,相当于数据库主表中的外键。可选的参数如下:

  • comodel_name: 被关联的对象
  • domain: 过滤条件
  • context: 上下文
  • ondelete: 删除时的选项,可选set null(本字段设置null),restrict(严格控制,只有先删除本字段才允许删除)和cascade(级联删除本字段关联的所有记录)。
  • auto_join: 当字段被搜索时是否自动聚合,默认为False
  • delegate: 当设置为True时,关联对象的所有字段将在本字段变得可用。

One2many

一对多类型,返回值是一个关联对象的集合。接收的参数列表如下:

  • comodel_name: 关联对象名称
  • inverse_name: 在Many2one对象中的字段名 默认为None
  • domain: 过滤条件
  • context: 上下文
  • auto_join: 当字段被搜索时是否自动聚合,默认为False
  • limit: 读取的条数限制
  • copy: 是否允许拷贝(默认False)

在这里插入图片描述

Many2many

多对多关系类型的字段,Many2many的命令字与One2many相同,与One2many类型不同的是, One2many要对关联对象有一个回溯本身对象的inverse_name字段,而Many2many字段并无此限制。

Many2many字段的主要属性参数如下:

  • comodel_name:关联对象名
  • relation:关系表名
  • column1:本对象的关联字段名
  • column2:关联对象的关联字段名
  • domain: 过滤条件
  • context: 上下文
  • limit: 读取条数限制

相关文章:

odoo18中模型的常用字段类型

字段的公共属性: Char 字符类型&#xff0c;对应数据库中varchar类型&#xff0c;除了通用类型外接收另外两个参数&#xff1a; size: 字符长度&#xff0c;超出的长度将被截断 trim: 默认True&#xff0c;是否字段值应该被去空白。 Text 文本类型&#xff0c;对应数据库…...

【如何用更少的数据作出更好的决策】-gpt生成

如何用更少的数据作出更好的决策 用更少的数据作出更好的决策是一种能力的体现&#xff0c;需要结合有效的方法、严谨的逻辑以及对问题的深刻理解。以下是一些可以帮助你实现这一目标的策略&#xff1a; 明确目标 在收集和分析数据之前&#xff0c;先明确你的决策目标是什么…...

ara::com 与 AUTOSAR 元模型的关系总结

原文链接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;6&#xff09; 整体说明 先是表明此前解释 ara::com API 思想和机制时未涉及具体 AP 元模型清单部分&#xff0c;本章旨在阐明 ara::com 与相关元模型部分的关系&#xff0c;且是较高层次的基本理解性介绍&am…...

springboot整合hive

springboot整合hive pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…...

浅谈 proxy

应用场景 Vue2采用的defineProperty去实现数据绑定&#xff0c;Vue3则改为Proxy&#xff0c;遇到了什么问题&#xff1f; - 在Vue2中不能检测数组和对象的变化 1. 无法检测 对象property 的添加或移除 var vm new Vue({data:{a:1} })// vm.a 是响应式的vm.b 2 // vm.b 是…...

Ansys Maxwell:SheetScan - 导入材料特性曲线

你好&#xff0c; 在这篇博文中&#xff0c;我展示了如何使用 Ansys Maxwell“SheetScan”工具导入材料特性数据集。在这篇博文中&#xff0c;我展示了如何导入复杂磁导率实部数据集以用于涡流&#xff08;频率相关&#xff09;求解器&#xff0c;并以 Ferroxcube 磁芯材料规格…...

解决 Android 单元测试 No tests found for given includes:

问题 报错&#xff1a; Execution failed for task :testDebugUnitTest. > No tests found for given includes: 解决方案 1、一开始以为是没有给测试类加public修饰 2、然后替换 Test 注解的包可以解决&#xff0c;将 org.junit.jupiter.api.Test 修改为 org.junit.Tes…...

人工智能的核心思想-神经网络

神经网络原理 引言 在理解ChatGPT之前&#xff0c;我们需要从神经网络开始&#xff0c;了解最简单的“鹦鹉学舌”是如何实现的。神经网络是人工智能领域的基础&#xff0c;它模仿了人脑神经元的结构和功能&#xff0c;通过学习和训练来解决复杂的任务。本文将详细介绍神经网络…...

JAVA中的Lamda表达式

JAVA中的Lamda表达式 Lambda 表达式的语法使用场景示例代码1.代替匿名内部类2. 带参数的 Lambda 表达式3. 与集合框架结合使用4. 使用 Stream 操作 总结 Java 的 Lambda 表达式是 Java 8 引入的一个新特性&#xff0c;用于简化代码&#xff0c;特别是在处理函数式编程时。Lambd…...

锂电池学习笔记(一) 初识锂电池

前言 锂电池近几年一直都是很热门的产品&#xff0c;充放电管理更是学问蛮多&#xff0c;工作生活中难免会碰到&#xff0c;所以说学习锂电池是工程师的必备知识储备&#xff0c;今天学习锂电池的基本知识&#xff0c;分类&#xff0c;优缺点&#xff0c;循序渐进 学习参考 【…...

深度学习2

四、tensor常见操作 1、元素值 1.1、获取元素值 tensor.item() 返回tensor的元素&#xff1b;只能在一个元素值使用&#xff0c;多个报错&#xff0c;当存在多个元素值时需要使用索引进行获取到一个元素值时在使用 item。 1.2、元素值运算 tensor对元素值的运算&#xff1a;…...

第六节-AppScan扫描报告

第六节-AppScan扫描报告 1.加载扫描结果 1.点击【打开】 2.选择之前保存过的扫描结果 3.等待加载完成 2.领导查看的报告 1.点击【报告】 2.模板选择为【缺省值】 3.最低严重性选择为【中】&#xff0c;测试类型选择为【应用程序】 4.点击【布局】 5.选择【其他徽标】&#x…...

【c++丨STL】stack和queue的使用及模拟实现

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C、STL 目录 前言 一、什么是容器适配器 二、stack的使用及模拟实现 1. stack的使用 empty size top push和pop swap 2. stack的模拟实现 三、queue的…...

基于SpringBoot的在线教育系统【附源码】

基于SpringBoot的在线教育系统 效果如下&#xff1a; 系统登录页面 系统管理员主页面 课程管理页面 课程分类管理页面 用户主页面 系统主页面 研究背景 随着互联网技术的飞速发展&#xff0c;线上教育已成为现代教育的重要组成部分。在线教育系统以其灵活的学习时间和地点&a…...

Kafka-副本分配策略

一、上下文 《Kafka-创建topic源码》我们大致分析了topic创建的流程&#xff0c;为了保持它的完整性和清晰度。细节并没有展开分析。下面我们就来分析下副本的分配策略以及副本中的leader角色的确定逻辑。当有了副本分配策略&#xff0c;才会得到分区对应的broker&#xff0c;…...

市场波动不断,如何自我提高交易心理韧性?

交易市场&#xff0c;一个由无数变量交织而成的复杂领域&#xff0c;常常因各方因素的微妙变化而掀起波澜。在这里&#xff0c;机遇与挑战并存&#xff0c;诱人的利润与潜在的风险如影随形&#xff0c;共同考验着每一位交易员的智慧与心理承受能力。在这样的环境下&#xff0c;…...

加速科技精彩亮相中国国际半导体博览会IC China 2024

11月18日—20日&#xff0c;第二十一届中国国际半导体博览会&#xff08;IC China 2024&#xff09;在北京国家会议中心顺利举办&#xff0c;加速科技携重磅产品及全系测试解决方案精彩亮相&#xff0c;加速科技创始人兼董事长邬刚受邀在先进封装创新发展论坛与半导体产业前沿与…...

利用c语言详细介绍下选择排序

选择排序&#xff08;Selection sort&#xff09;是一种简单直观的排序算法。它是每次选出最小或者最大的元素放在开头或者结尾位置&#xff08;采用升序的方式&#xff09;&#xff0c;最终完成列表排序的算法。 一、图文介绍 我们还是使用数组【10&#xff0c;5&#xff0c;3…...

华为流程L1-L6业务流程深度细化到可执行

该文档主要介绍了华为业务流程的深度细化及相关内容,包括流程框架、建模方法、流程模块描述、流程图建模等,旨在帮助企业构建有效的流程体系,实现战略目标。具体内容如下: 华为业务流程的深度细化 流程层级:华为业务流程分为 L1 - L6 六个层级,L1 为流程大类,L2 为流程…...

bridge-multicast-igmpsnooping

# 1.topo # 2.创建命名空间 ip netns add ns0 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns0-veth0 type veth peer name hn0-veth0 ip link add ns1-veth0 type veth peer name hn1-veth0 ip link add ns2-veth0 type veth pe…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容&#xff1b;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容&#xff08;CL&#xff09;与匹配电容&#xff08;CL1、CL2&#xff09;的关系 2. 如何选择 CL1 和 CL…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例

目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码&#xff1a;冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态&#xff0c;这是一个可以多选的控件。 二、属性 其实功能大差不差&#xff0c;除了特殊的几个外&#xff0c;与button基本相同&#xff0c;所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

标注工具核心架构分析——主窗口的图像显示

&#x1f3d7;️ 标注工具核心架构分析 &#x1f4cb; 系统概述 主要有两个核心类&#xff0c;采用经典的 Scene-View 架构模式&#xff1a; &#x1f3af; 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 &#x1f527; 关键函数&…...

SpringCloud优势

目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...