首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过javascript从新模块获得对现有Odoo模块的字段的控制。我不想修改现有的模块

在Odoo中,可以通过JavaScript从新模块获得对现有模块字段的控制,而无需修改现有模块。以下是一种实现方式:

  1. 创建一个新的Odoo模块,命名为"custom_module"(可以根据实际需求自定义模块名称)。
  2. 在custom_module中创建一个JavaScript文件,命名为"custom_script.js"。
  3. 在custom_script.js中,使用Odoo的JavaScript API来获取对现有模块字段的控制。可以使用以下代码示例:
代码语言:txt
复制
odoo.define('custom_module.custom_script', function (require) {
    "use strict";

    var core = require('web.core');
    var FormController = require('web.FormController');

    var _t = core._t;

    FormController.include({
        init: function (parent, model, renderer, params) {
            this._super.apply(this, arguments);
            // 在这里可以对现有模块的字段进行控制
            // 例如,隐藏某个字段
            this.renderer.arch.children.forEach(function (node) {
                if (node.attrs.name === 'field_name_to_hide') {
                    node.attrs.invisible = "1";
                }
            });
        },
    });
});
  1. 在custom_module中创建一个XML文件,命名为"custom_module.xml",用于加载JavaScript文件。
代码语言:txt
复制
<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <template id="assets_backend" name="custom_module assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                <script type="text/javascript" src="/custom_module/static/src/js/custom_script.js"></script>
            </xpath>
        </template>
    </data>
</odoo>
  1. 在custom_module的__manifest__.py文件中添加对XML文件的引用。
代码语言:txt
复制
{
    'name': 'Custom Module',
    'version': '1.0',
    'summary': 'Customize existing Odoo module using JavaScript',
    'depends': ['base', 'existing_module'],
    'data': [
        'views/custom_module.xml',
    ],
    'installable': True,
    'auto_install': False,
    'application': True,
}
  1. 将custom_module文件夹放置在Odoo的addons目录下,并重新启动Odoo服务器。
  2. 现在,当您访问现有模块的表单视图时,custom_script.js中的代码将会执行,并根据您的需求对字段进行控制。在上述示例中,我们隐藏了名为"field_name_to_hide"的字段。

请注意,以上示例仅演示了如何通过JavaScript对现有模块的字段进行控制。根据实际需求,您可以使用Odoo的JavaScript API进行更多的自定义操作,例如修改字段属性、添加验证逻辑等。

对于更多关于Odoo的详细信息和其他功能,请参考腾讯云的Odoo产品介绍页面:Odoo产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Odoo开发指北 01 初识Odoo

继承开发 Odoo提供了大量现成模块给我们使用,但是某些情况下,我们需要制定符合自己需求功能模块Odoo开发一条黄金准则是——不要修改现有的模块,以免改动后代码与原有模块产生混淆。...因此,odoo提供了继承机制,我们可以选择一个基础模块,然后继承它,在它基础上进行修改、扩展,生成自己模块。...然后使用自己模块:把自己模块路径设置到odoo中,重启odoo让其搜索到自定义模块,即可通过odoo进行安装。...security:模块访问权限控制,在ir.model.access.csv文件中定义。还可以新建一个record_rule.xml,在其中进行更细化权限控制。...脚手架 odoo-bin scaffold 命令新建了我们 aaa 应用 …/odoo-bin scaffold aaa 模块开发流程 分析模块模型,得出模型所需字段有哪些,然后定义模型类——

2.3K30

odoo 开发入门教程系列-QWeb简史

QWeb简史 到目前为止,我们房地产模块界面设计相当有限。构建列表视图很简单,因为只需要字段列表。...此外,PDF报告或网站页面等其他功能需要另一个更灵活工具:模板引擎。 您可能已经熟悉现有的引擎,如Jinja(Python)、ERB(Ruby) 或Twig(PHP)。...每个字段都有两个属性 value 和raw_value。前者是根据当前用户参数格式化,后者则是直接通过read()读取。...在上面的示例中,字段name被添加到元素中,但state在它之外。当我们需要字段值但不想在视图中显示它时,可以将其添加到元素之外。... 验证效果 看板视图是一个典型例子,说明从现有视图开始并其进行微调而不是从头开始总是一个好主意

2K20

odoo 开发入门教程系列-继承(Inheritance)

继承(Inheritance) Odoo一个强大方面是它模块化。模块专用于业务需求,但模块也可以相互交互。这对于扩展现有模块功能非常有用。...为此,我们需要向res.users模型添加一个字段,并调整其视图以显示它。 Odoo提供了两种继承机制来以模块方式扩展现有模型。...第一继承机制允许模块通过以下方式修改在另一个模块中定义模型行为: 向模型添加字段 覆盖模型中字段定义 给模型添加约束 给模型添加方法 重写模型中现有方法 第二种继承机制...(委托)允许将模型每个记录链接到父模型记录,并提供该父记录字段透明访问。...目标: 在用户表单视图中显示与销售人员关联avaliable房产列表其用户表单视图 Odoo提供了视图继承,其中子“扩展”视图应用于根视图之上,而不是就地修改现有视图(通过重写它们)。

2.2K20

odoo 权限管理学习总结

res_partner表中,那么在odoo如何区分用户类型以及如何做权限控制呢?...=70 通过上述方式实现菜单访问权限控制,实际是通过控制是否隐藏菜单实现,也就说,如果知道未授权菜单ID,还是可以通过菜单ID拼接菜单URL进行未授权访问。...如果当前用户不在列出组中,他将无权访问该字段: 将自动从请求视图中删除受限制字段 从fields_get()响应中删除受限制字段 尝试(显式)读取或写入受限字段会导致访问错误 修改estate...注意:通过为当前视图中目标字段添加groups属性实现权限控制仅作用于当前视图,如果希望当前视图模型(Model)所有视图中,字段实现统一权限控制话,需要在模型定义中,为目标字段添加groups...解压下载base_user_role-12.0.2.1.2.zip文件,解压后部分文件做如下修改: base_user_role\models\user.py,base_user_role\models

10K20

odoo 开发入门教程系列-模块交互

模块交互 在上一章中,我们使用继承来修改模块行为。在我们房地产场景中,我们希望更进一步,能够为客户生成发票。...Odoo提供了一个开发票模块,因此直接从我们房地产模块创建发票是很简单,也就是说,一旦某个房产设置为“已售出”,就会在Invoicing应用程序中创建发票 一个具体示例: 记账凭证(Account...如果我们打算将我们应用程序卖给房地产代理,有些人可能想要发票功能,但有些人可能不想要。 链接模块(Link Module) 此类使用案例常见方法是创建“链接”模块。...不幸是,没有一种简单方法可以知道如何Odoo中创建任何给定对象。大多数时候,有必要查看其模型,以找到所需字段并提供适当值。 学习一个好方法是看看其他模块如何完成你想做事情。...修改odoo14\custom\estate_account\models\estate_property.py def set_property_sold(self): self.env

1.6K10

轻松部署Odoo软件

Odoo有强大而灵活系统架构,可在不修改核心代码情况下修改功能、升级模块、新增模块Odoo活跃社区在不断修正各类错误,贡献各种用途模块,产品迭代速度非常快。...准备 在云控制台获取您 服务器公网IP地址 在云控制台安全组中,检查 Inbound(入)规则 下 TCP:80 端口是否开启 若想用域名访问 Odoo,请先到 域名控制台 完成一个域名解析 Odoo...此功能只能在开发者模式下使用,请确保你 Odoo 控制台是否已经切换成开发者管理模式 如何删除 Odoo 演示数据?...请直接通过 Odoo 自带数据库管理工具操作 是否可以修改Odoo源码路径? 不可以 如何修改上传文件权限?...,订阅镜像一方面省去了安装麻烦,另外一方面可以在运维过程获得我们技术支持 总体费用 = 云服务器费用 + 镜像费用 + 企业版授权费用 Odoo 社区版可以升级到企业版吗?

4.7K00

odoo ORM API学习总结兼orm学习教程

默认字段标签(Lable,即用户可见字段名称)为对应字段名称开头字母改成大写后值,可通过 string 字段属性改成修改字段Label field2 = fields.Integer(string...,Odoo会按照一些启发式方法预取个记录和字段,以获得良好性能。...一旦必须在给定记录上读取字段,ORM实际上会在更大记录集上读取该字段,并将返回值存储在缓存中以供后续使用。预取记录集通常是通过迭代获得记录记录集。...and extension) Odoo提供三种不同机制,以模块化方式扩展模型: 从现有模型创建新模型,向副本中添加新信息,但保留原始模块 扩展其他模块中定义模型,替换以前版本 将模型一些字段委派给它包含记录...经典继承 当同时使用_inherit和 _name 属性时,Odoo使用现有模型(通过_inherit提供)作为base创建新模型。

13.2K10

odoo 开发入门教程系列-模型和基本字段

模型和基本字段 在上一章末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。...odoo框架提供了数据库交互工具 开始练习前,请确保estate模块已被安装,也就是说必须以installed状态出现在Apps列表中,如下 对象关系映射(Object-Relational Mapping...ORM 层是odoo一个关键组件。该层避免了手动写入大部分SQL并提供可扩展性和安全服务. 业务对象被定义为继承于 ModelPython类。可以通过在定义中设置属性来配置model。...model _name中 . 会被ORM自动化转为_ 。按约定所有的model位于一个名为 models 目录,并且每个mode被定义为一个Python文件。...有些属性是所有字段都拥有的,最常见几个属性如下: string (str, default: 字段名称) UI上显示为字段label (用户可见).

2.2K30

odoo 开发入门教程系列-模型之间关系(Relations Between Models)

你可能需要参考任何现有业务模型上客户或用户。...例如,我们通过partner_id字段,在测试模型上定义了到res.partner模型链接。...首先,我们不需要所有模型操作或菜单。某些模型只能通过另一个模型访问。在我们练习中就是这样:报价总是通过房产获得。 其次,尽管property_id字段是必需,但我们没有将其包含在视图中。...odoo如何知道我们报价与哪个房产相关?这就是使用odoo框架一部分魔力:有时候事情是隐式定义。...当我们通过one2many字段创建记录时,为了方便,会自动填充相应many2one 添加odoo14\custom\estate\models\estate_property_offer.py #!

4.3K40

近 400 万用户正在使用开源 Odoo ERP 系统

于是乎,在知乎、百度以及 Github 一番搜索过后,发现了一个功能齐全且开源 ERP 系统 —— Odoo, 据官方描述: Odoo 是一系列开源商业应用程序套装,此套装可满足贵公司一切应用需求...看到这样描述,心里只有一句“强啊”。 通过Github地址:https://github.com/odoo/odoo 进去之后 ?...odoo-docker-compose ,你没看错,如果你本地安装了 Docekr 环境,你只需要复制该内容到 docker-compose.yml,然后执行 docker-compose up -...等了大约20秒,就会跳到主页面了,从主页可以看到 odoo,采用了模块设计,根据自己公司需求去选择安装哪些模块。 ? 但是,发现这里面的有些模块标识为“升级”是需要额外付费享用,也能理解。...侵删 Odoo由 OpenERP 发展而来,Odoo 现在有一套完整业务应用,满足所有的企业业务需求,从网站、电子商务到制造,库存和会计等,所有的领域无缝集成。

4.4K20

​在tinycolinux上编译odoo8

而且,odoo还采用了pgsql,从Postgres 9.x开始,Postgres又添加了激动人心NoSQL支持,,Postgres是通过添加一个json(jsonb)数据类型来实现文档型存储。...最后,odoo采用python,要谈到语言优异对比足于掀起大论战了,不重复那些聚焦语言内部如何pythonic老话题,只讲几条外部特征: 1,C系和原生程序,是基本所有现实中可见系统实现基石,但...database (SQL_ASCII) 在lnpp中安装精简odoo,python模块和配置uswgi和nginx参数 ----- 我们先安装odoo再来处理python,这样运行它时可以逐个通过pip...怎么应用和操作又是一种境地了,odoo有的操作中,数据都有固定视图,一条博文和一个文件是一样,一个产品和一个电脑是一样,faint,记得怎么进管理模式,忘了。...------------------ 特别喜欢python生态下jupyter,如果说odoocms是一种带前端展示渲染后端控制渲染综合应用逻辑体,且其可视化拖拉是一种visual editor

1.4K40

odoo 开发入门教程系列-计算字段和变更(Computed Fields And Onchanges)

计算字段和变更(Computed Fields And Onchanges) 模型之间关系是任何Odoo模块关键组成部分。它们对于任何业务案例建模都是必要。...在这种情况下,不会从数据库中检索字段值,而是通过调用模型方法来动态计算字段值。 要创建计算字段,请创建字段并将其属性compute设置为方法名称。...计算方法应为self中每个记录设置计算字段值。 按约定,compute方法是私有的,这意味着它们不能从表示层调用,只能从业务层调用。私有方法名称以下划线_开头。...每当修改字段某些依赖项时,ORM使用给定依赖项来触发字段重新计算 from odoo import api, fields, models class TestComputed(models.Model...你self所做任何更改都将反映在表单上: from odoo import api, fields, models class TestOnchange(models.Model): _name

3.1K30

在Ubuntu 16.04上安装Odoo 10

部署后,Odoo允许管理员安装任何模块组合,并根据业务需求配置/定制它,范围从小型商店到企业级公司。 本教程介绍了如何使用Git源代码在一小时内安装和配置Odoo,以便于升级,维护和自定义。...中)并根据您需要进行修改。.../odoo/requirements.txt 这些命令使用随Odoo安装提供requirements.txt文件,以确保您获得应用程序所依赖软件包正确版本。...如果一切按预期进行,您可以启动负载测试模块“行为”测试(与代码不兼容错误不同),以及您配置任何其他测试。 更新您生产系统 如果所有测试都通过,您可以更新生产安装。...自建服务器难免会遇到这样问题,配置SSL很麻烦,虽然一部分人来说这也是一种乐趣,但是如果您在生产环境使用,还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展关系型数据库

3.3K42

Nestjs入门教程【一】基础概念

MVC 也许是大多开发者所能接受开发思想了,这里解释一下,M(Model模型即数据层)、V(View视图,多为前后端分离项目,后端只提供接口服务)、C(Controller控制器,控制前端请求来路由分发等...如何优雅地管理项目模块,变得尤为重要,觉得 Nestjs 正是这样一个帮助我们更好开发框架。我们开始学习吧!...客户端请求最终交给那个函数或者模块处理都需要通过预先处理,直接处理客户端请求(路由、方法等)模块我们称之为控制器。@Controller Providers 英文直译:提供者,提供?提供什么?...应用中有些请求处理不是所有前来请求用户完全开放,只有具有指定身份的人才能请求某些接口,负责这一职责功能模块称之为守卫。...一个流水线,如果中间临时需要加一道工序,随加随撤,我们发现这一道工序只是目前临时新增,他并不属于这条流水线上完整环境中一个步骤,因此这道工序我们可以将它看做外来者,有没有他不影响我们现有的流水线工作

2.3K30

ODOO配置文件etcodoo.conf配置详解

1.Dbfilter配置 Odoo是一个多租户系统:一个Odoo系统可以运行并服务于多个数据库实例。它也是高度可定制,定制(从加载模块开始)取决于“当前数据库”。 ...这是--db filter目的之一:它指定如何根据所请求主机名(域)选择数据库。该值是一个正则表达式,可能包括动态注入主机名(%h)或访问系统所通过第一个子域(%d)。 ...**中基本参数 Odoo通过端口5432通过UNIX套接字连接到本地postgres。...工作进程数量计算 数量规则:(#CPU * 2) + 1 Cron工作者需要CPU 1个工作进程~=6个并发用户 内存大小计算 我们认为20%请求是繁重请求,而80%是简单请求 一个繁重工作,当所有的计算字段都设计好了...表   log_db = False   ;设置模块日志级别,可以是一组module:log_level, 默认值是“:INFO”(表示所有模块默认日志级别为INFO)   log_handler

6.5K21

odoo Actions学习总结

所有Action都有两个强制属性: type 当前Action类别,决定可以使用哪些字段以及如何解释action name action名称,在客户端界面中显示action简短用户可读描述...包含字段: res_model action触发要显示视图关联模型 views (view_id,view_type)列表。...(否则创建一个条新记录) search_view_id (可选) (id, name) , id 为动作需要加载指定搜索视图数据库ID。...在web客户端中默认为80 name(可选),action名称,界面显示时拼接到当前面包屑导航(现有导航面包屑 / name值)。...中每个未填充类型,追加(False,type) 应用实践举例 在estate模块estate.property模型表单视图中,为Action添加菜单"选取offers",如下: !

2.6K30

odoo 开发入门教程系列-约束(Constraints)

约束(Constraints) 上一章介绍了向模型中添加一些业务逻辑能力。我们现在可以将按钮链接到业务代码,但如何防止用户输入错误数据?...例如,在我们房地产模块中,没有什么可以阻止用户设置负预期价格。 odoo提供了两种设置自动验证恒定式方法:Python约束 and SQL约束。...CHECK(selling_price > 0)校验 修改odoo14\custom\estate\models\estate_property_tag.py,添加SQL约束 _sql_constraints...Python约束定义为用 constrains()修饰方法,并在记录集上调用。修饰符指定约束中涉及哪些字段。当修改这些字段任何字段时,将自动计算约束。...修改odoo14\custom\estate\models\estate_property.py 导入 ValidationError from odoo.exceptions import ValidationError

1.4K20

Django数据库查询优化与AJAX

、一外键字段,特点:内部自动连表操作,会将括号内外键字段所关联表与当前表自动拼接成一张表,然后将表中数据一个一个查询出来封装成一个一个对象。...使用:主要用于多字段和一字段 耗时:查询次数上 res = models.Book.objects.prefetch_related('publisher') for i in res...但是问题来了前端如何向后端发生json格式数据呢?...Django内置serializers模块 前端想拿到通过orm查到一个个对象,(数据库里一条条记录),后端想把直接实例化出来对象发送给前端,这时候就需要用到Django给我们提供序列法方式(...使用方法: def ser(request): #拿到用户表里面的所有的用户对象 user_list=models.User.objects.all() #导入内置序列化模块

2.3K20

现代 JavaScript 库打包指南

版本 通过在 tsconfig.json 中设置 "target"="es5" 生成一个兼容低版本 JavaScript umd 版本 有了这些设置,大多数用户将获得现代版本代码,但那些使用老打包工具配置或使用...当你更新库中代码时,你可以更新 version 字段并发布以允许开发者获取该新代码。 推荐使用 semver 版本控制策略,但要注意是有些库选择 calver 或使用他们自己特有的版本控制策略。...无论你选择使用哪种策略,都应该记录下来,以便开发者了解你库是如何进行版本控制。 你还应该在 changelog 中记录你更改。...例如,如果你将代码从 TypeScript 编译为 JavaScript,你可能就不想在 NPM 包中包含 TypeScript 源代码。(相反,你应该包含 sourcemap)。...通过设置 sideEffects 让打包工具知道你模块是否是“纯”。不设置这个字段,打包工具将不得不假设你「所有」模块都是有副作用。

2.3K20
领券