No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享
文 / 开源智造(OSCG)· Odoo亚太金牌服务
在Odoo18之中,配置设定于管控各类系统配置层面发挥着关键之效用,使您能够对软件予以定制,以契合您特定的业务需求。尽管 Odoo 提供了一组强劲的默认配置选项,然而有时您或许需要增添自定义字段,从而能更好地与您的业务流程相契合。本指南将引领您达成在 Odoo 18 中向配置设定添加自定义字段的进程,并以其他交付选项拓展 Odoo 18 POS(销售点)配置的实际范例。

在 Odoo 当中,配置设置经由 res.config.settings 模型予以管理。该模型充作管理模块特定设置的集中之所,这些设置的范畴涵盖自常规的系统首选项至单个模块的特定配置选项。借由对该模型进行扩展,您能够增添契合您独特需求的新字段,进而确保您的配置设置尽可能完备且具有相关性。
扩展配置设置能够让您融入默认 Odoo 配置所未涵盖的其他参数。这对于那些需要标准选项未能涵盖的特定设置的模块而言,尤为有用。譬如,于 POS 系统之中,您或许需要对各种交付方式进行配置,并依据您的业务运营启用特定的选项。凭借添加自定义字段,您能够为用户给予更为定制化且功能更强大的设置。
将自定义字段添加到配置设置
要将自定义字段添加到 Odoo 18 中的配置设置,请按照以下关键步骤操作:
定义自定义域
第一步是通过增添自定义字段来拓展 res.config.settings 模型。此过程牵涉到创建一个新的 Python 文件,您能够于其中界定其他字段并指明其属性。举例而言,您或许期望添加一个 Boolean 字段以启用或禁用某些功能,同时添加一个 Many2many 字段来选取各类交付方法。创建一个诸如 res_config_settings.py 的 Python 文件,用以拓展 res.config.settings 模型。
from ast import literal_eval
from odoo import api, fields, models
class ResConfigSettings(models.TransientModel):"""Extension of 'res.config.settings' for configuring delivery settings."""_inherit = 'res.config.settings'enable_delivery = fields.Boolean(string='Enable Order Types',help='This field is used to enable setting''order types in settings')delivery_methods = fields.Many2many('delivery.type',string='Order Types',help='Set the delivery methods')@api.modeldef get_values(self):"""Get the values from settings."""res = super(ResConfigSettings, self).get_values()icp_sudo = self.env['ir.config_parameter'].sudo()enable_delivery = icp_sudo.get_param('res.config.settings.enable_delivery')delivery_methods = icp_sudo.get_param('res.config.settings.delivery_methods')res.update(enable_delivery=enable_delivery,delivery_methods=[(6, 0, literal_eval(delivery_methods))] if delivery_methods else False,)return resdef set_values(self):"""Set the values. The new values are stored in the configuration parameters."""res = super(ResConfigSettings, self).set_values()self.env['ir.config_parameter'].sudo().set_param('res.config.settings.enable_delivery', self.enable_delivery)self.env['ir.config_parameter'].sudo().set_param('res.config.settings.delivery_methods',self.delivery_methods.ids)return res
创建自定义视图
在定义好自定义字段之后,下一步乃是创建一个视图,此视图会于配置设置当中展示这些字段。这关联到定义一个 XML 文件,该文件明确了新字段于现存配置设置表单里的显示形式和位置。借助 XML,您能够将自定义字段融入到设置视图的相应部分之中,保证它们易于获取和逻辑排布。
若要将自定义字段整合至 POS 配置设置表单当中,请于文件中定义 XML 视图,例如:res_config_settings_views.xml
<?xml version="1.0" encoding="UTF-8"?>
<odoo><!-- Define a view to extend POS configuration settings with delivery options --><record id="view_pos_configuration_form" model="ir.ui.view"><field name="name">pos.config.view.form.inherit.pos.order.types</field><field name="model">res.config.settings</field><field name="inherit_id" ref="point_of_sale.res_config_settings_view_form"/><field name="arch" type="xml"><xpath expr="//block[@id='pos_accounting_section']" position="after"><div class="row mt16 o_settings_container"><div class="col-12 col-lg-6 o_setting_box"><div class="o_setting_left_pane"><field name="enable_delivery"/></div><div class="o_setting_right_pane"><label for="enable_delivery"/><div class="text-muted">Delivery products based on order types</div><div class="content-group mt16" invisible="enable_delivery == False"><field name="delivery_methods" widget="many2many_tags"/></div></div></div></div></xpath></field></record>
</odoo>
在定义完自定义字段并创建好视图之后,您需要对模块列表予以更新,并安装自定义模块。此步骤能够确保您的新字段融入到 Odoo 系统当中且可供运用。通过对模块列表进行更新以及安装模块,您能够让您的自定义配置设置在 Odoo 界面中得以显现并发挥效用。

于 Odoo 18 之中将自定义字段添加至配置设置,能够增强 Odoo 实例的灵活性与功能。借由扩展 res.config.settings 模型并创建自定义视图,您能够融入满足特定业务需求的其他参数。此种方法不但能够优化用户体验,还能够确保您的配置设置与您的操作要求保持契合。
无论您是对 POS 设置进行自定义,还是配置其他模块,添加和管理自定义字段的能力,皆为定制 Odoo 以适配您的业务流程提供了极具价值的选项。经由本指南,您能够安心地拓展 Odoo 配置设置,并强化系统的功能。
相关文章:
No.1免费开源ERP:Odoo自定义字段添加到配置页中的技术分享
文 / 开源智造(OSCG) Odoo亚太金牌服务 在Odoo18之中,配置设定于管控各类系统配置层面发挥着关键之效用,使您能够对软件予以定制,以契合您特定的业务需求。尽管 Odoo 提供了一组强劲的默认配置选项,然而有…...
Linux 更改Jenkins使用其他账户启动
Linux 更改Jenkins使用其他账户启动 步骤一:修改 Jenkins 配置文件1. 编辑 Jenkins 的 systemd 服务文件:2. 在编辑器中添加以下内容:3. 保存并退出编辑器 步骤二:更改 Jenkins 目录的权限步骤三:重新加载 systemd 配置…...
wordpres当前分类调用父分类的名称和链接
在WordPress中,如果你想在当前分类页面调用并显示父分类的名称和链接,你可以使用以下代码片段: <?php // 获取当前分类的ID $cat_id get_queried_object_id();// 获取当前分类的父分类ID $parent_id get_term($cat_id, category)->…...
TCP客户端模拟链接websocket服务端发送消息(二)
兄弟们,我来填坑了,o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o,前几天写了个tcp模拟websocket客户端的以为完成,后面需要发送消息给服务端,以为简单不就是一个发送消息么,这不是一…...
操作系统之同步与互斥的基本概念
1. 同步的基本概念 定义:同步是指在多个并发执行的进程或线程之间协调其行为,以使它们能够正确地相互合作。在计算机科学中,同步通常指对共享资源进行访问控制,以避免竞争条件和死锁等问题。 实现方式:为了实现同步&a…...
详细讲解axios封装与api接口封装管理
一、axios封装 axios是基于promise的http客户端,用于浏览器和nodejs发送http请求 ,对它进行封装主要是为了统一管理请求配置和处理请求和响应的通用逻辑等。以下是常用的封装逻辑和要点 1:引入axios相关依赖 首先引用项目中的axios库&…...
API 接口如何确保数据的安全?
在API接口的对接中,确保数据的安全性是至关重要的。以下是一些关键措施,可以帮助实现这一目标: 一、认证与授权 API密钥:为每个调用方分配唯一的API密钥,客户端在请求时携带该密钥,服务器端验证其有效性。…...
HAL库STM32硬件IIC驱动数字电位器MCP4017
目录 一、芯片特性 二、硬件电路 三、工程搭建 四、IIC硬件地址 五、驱动程序 项目需要,最近用到了一个IIC接口的数字电位器,型号:MCP4017T-502E。对应阻值5K,使用STM32G030F6的硬件IIC驱动,发现简单的不得了&…...
「地平线」副总裁余轶南与「理想汽车」智驾产品总监赵哲伦联手创业,入局具身智能赛道!
小编早期文章:智驾领域从业者,疯狂涌入人形机器人赛道!就有提到智驾领域从业者入局人形机器人赛道是趋势并分析原因。 之前媒体报道的智驾芯片上市公司【地平线】创始成员、副总裁、前软件平台产品线总裁余轶南(博士)…...
弹性盒子(display: flex)布局超全讲解|Flex 布局教程
文章目录 弹性盒子flex什么是弹性布局?弹性布局的特点?justify-contentalign-itemflex-direction (主轴的方向:水平或者垂直)flex-wrapflex-flowalign-contentflex-grow 属性flex-shrink 属性flex-basis 属性flex 属性align-self 属性 弹性盒…...
无问社区-无问AI模型
无问AI模型是无问社区新上线的一款AI功能,支持文本图像的输入,在文本理解能力、推理能力、视觉能力上相较于“社区助手”有了很大的提升。 我们在预训练模型的技术上增加1.7亿token的训练数据进行强化训练使其具备更好的效果。 更好的消息是我们准备了…...
如何记录日常笔记
如何使用Obsidian来记录日常的笔记吗?比如会议记录、读书笔记。 我认为,首先需要做好的就是建立一个单独的分类,比如设置会议记录的文件夹、读书笔记的文件夹,这样各个笔记相互不干扰。 而做日常记录,和我们进行卡片…...
【魅力golang】之-反射
1、引言 反射(Reflection)在 Golang中用于运行时检查和操作变量的类型和值。通过反射,可以实现动态类型处理,这在构建泛型代码、框架、序列化工具和动态代理等场景中非常有用。 2、什么是反射 反射是指程序在运行时能够动态地检…...
git--批量修改本地用户名和邮箱
原文网址:git--批量修改本地用户名和邮箱-CSDN博客 简介 本文介绍git如何批量修改项目的本地用户名和邮箱。 脚本 新建脚本:git_config.sh,内容如下: #!/bin/bash topDirpwd echo "开始处理" for file in ls ./ do…...
Rofin罗芬激光PowerLine L300 PL400 Manual 软件
Rofin罗芬激光PowerLine L300 PL400 Manual 软件...
【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!
目录 快速安装使用 . 1.简介 2.安装 3.配置 4.补充 官方盗料参考 快速安装使用 快速安装使用,四步即可: #Ubuntu/Debian系统 sudo apt update sudo apt install python3-dev python3-pip sudo pip3 install thefuck #编辑bashrc配置文件 vim ~/.bashrc…...
牛客网刷题 ——C语言初阶——BC112小乐乐求和
1.牛客网刷题 ——C语言初阶 牛客网:BC112小乐乐求和 小乐乐最近接触了求和符号Σ,他想计算的结果。但是小乐乐很笨,请你帮助他解答。 输入描述: 输入一个正整数n (1 ≤ n ≤ 109) 输出描述: 输出一个值,为求和结果。 示例1 输…...
【PyTorch】(基础七)---- 完整训练流程
首先要明确一点,我们在编写模型、训练和使用模型的时候通常都是分开的,所以应该把Module的编写以及train方法和test方法分开编写。 调用gpu进行训练:在网络模型,数据,损失函数对象后面都使用.cuda(&#x…...
01- 三自由度串联机械臂位置分析
三自由度串联机械臂如下图所示(d180mm,L1100mm,L280mm),利用改进DH法建模,坐标系如下所示: 利用改进DH法建模,该机器人的DH参数表如下所示: 对该机械臂进行位置分析&…...
Flutter实现可拖拽操作Draggable
文章目录 1. Draggable 控件的构造函数主要参数: 2. Draggable 的工作原理3. 常见用法示例 1:基本的拖拽控件解释:示例 2:与 DragTarget 配合使用解释: 4. Draggable 的回调详解5. 总结 Draggable 是 Flutter 中一个用…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
break 语句和 continue 语句
break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行 break break语句用于跳出代码块或循环 1 2 3 4 5 6 for (var i 0; i < 5; i) { if (i 3){ break; } console.log(i); } continue continue语句用于立即终…...
