
odoo
小付学代码
初级小白程序员.....与大家分享学习过程中遇到的一些问题,共同进步,一起成长!
展开
-
【odoo16】odoo.js概念外部api通过controller层访问数据
这样的话就可以让odoo前后端分离,实现前端程序员用vue或者react直接写即可、写表单功能逻辑、然后odoo后端依旧写逻辑层、然后调接口即可、实现自己的ERP做到取其精华去其糟粕的阶段、完全定制(当然权限问题能解决的话、我感觉如果auth=‘user’的话肯定就拿不到数据、要不然也太不安全了)。昨天看到了一个视频:前端单独写web层、后端用odoo也是可行的,通过controller层就可以拿到前端数据,进行数据库的增删改查、还挺有趣。我们来看看请求响应:都是200请求成功,响应数据也渲染到了页面上。原创 2023-03-31 16:11:39 · 2528 阅读 · 1 评论 -
odoo中的接口
挂个链接:odoo的api接口_东木月的技术博客_51CTO博客原创 2022-06-13 15:31:36 · 696 阅读 · 0 评论 -
【odoo15】python前后端传参
举个例子:创建一个模块【test_conntorllers】在controllers包里创建一个 my_cont.py:简单解释一下: 模板代码: debug一下:拼接的参数传入kw中进行存储name1 = 张三 & sex1 = 18 ----------> name = name1 & sex = sex1 然后把参数name与sex的值放入 temp_name与temp_sex中展示出来。不知道插值语法能不能用,下次试试。{{temp_name}} vue这种写法。 后台也拿到了原创 2022-06-11 18:59:43 · 646 阅读 · 0 评论 -
【odoo15】odoo中的fa-xxx小图标
odoo中的小图标使用的就是这个: odoo中的可用图标库可以在如下的位置找到包含图标css文件:使用的时候:直接在参考列表里找:Font Awesome,一套绝佳的图标字体库和CSS框架Font Awesome,一套绝佳的图标字体库和CSS框架https://fontawesome.dashgame.com/比如说我想用这个图标:【 quora】 使用时加上 fa- 即可:......原创 2022-06-08 14:53:34 · 1095 阅读 · 0 评论 -
【odoo15】如何使用xpath将新字段插入到继承的tree或form视图中
举例说明:继承维修模型视图后,我想在form视图里添加一个Selection字段【售后来源-source】首先在继承的py模型中添加这个field:【source】代码:xpath到form:继承视图 repair.view_repair_order_form在一个name为tag_ids的字段后,插入这个字段。代码:xpath到tree:继承视图 view_approve_repair_order_treeoptional=“show” 或者optional=“hide” 添加这个属性原创 2022-06-08 14:06:36 · 420 阅读 · 0 评论 -
【odoo15】如何继承搜索视图并插入自己的搜索条件
例如:我继承了【repair.order】这个模型的视图【repair.view_repair_order_tree】想添加一些搜索条件至它的中,就可以采用xpath 插入字段到默认搜索视图: 使用xpath插入搜索条件:1.首先继承搜索视图:2.使用 【你的搜索...原创 2022-06-08 13:49:11 · 513 阅读 · 0 评论 -
【odoo15】继承视图并隐藏某个字段,或隐藏notebook中的某个page,更改notebook的page名
继承一下维修模型的视图,对它做一些更改:举个例子,就比如我要隐藏一下这个字段和下面的这个page【作业】只需要继承,然后直接使用xpath语句来隐藏:这就行了,上边的是隐藏notebook/page的name为【operations】,隐藏字段为【description】。追加属性 position="attributes"然后让隐藏 invisible = 1 也就是True改为0就是False。 继承页面完整代码:【 0............原创 2022-06-03 00:36:50 · 1364 阅读 · 0 评论 -
【odoo15】备份数据库
127.0.0.0/web/database/manager 备份数据库 :记录一下,还没尝试导入恢复,有空再试。原创 2022-05-30 16:46:44 · 322 阅读 · 0 评论 -
【odoo15】odoo manifest 中的 auto_install
这个这个设置为 依赖设置:通常情况下得设置为:False他会找到manifest中的所有依赖,然后安装它们,如果它报错,你一直找不到错误的原因,很有可能是依赖的其他几个模块导致的,所以比较麻烦,建议还是设置为 'auto_install': False 比较好。...原创 2022-05-25 18:07:57 · 313 阅读 · 0 评论 -
【odoo15】odoo中的controllers与website
和Django,Flask 挺像的,也是定义路线,然后捞资料,最后回传。先写 controllers文件夹的内容:【controllers.py】from odoo import httpclass Mysale(http.Controller): @http.route('/demo/mysale', auth='user', website=True) def list(self, **kwargs): obj = http.request.env['m原创 2022-05-25 17:07:30 · 660 阅读 · 2 评论 -
【odoo15】在阿里云服务器Ubuntu 20.04上安装Odoo 15
使用工具CRT或者MobaXterm_Personal都行:分享一下工具,下一篇博客写一下这俩工具怎么破解,怎么用:链接:https://pan.baidu.com/s/1QjjzOltcABe8vW3CIKLiVg提取码:x1eb开始进行部署:跟着下面的命令一步一步敲就行了:sudo apt updatesudo apt install git python3-pip build-essential wget python3-dev python3-venv \ py原创 2022-05-19 21:01:54 · 1901 阅读 · 0 评论 -
【odoo15】在linux里边安装python3.9
在python官网下载python.tgz安装包:上传到自定义目录:【解压文件 tar -xvzf 包名】 cd到解压后的Python目录里边:执行命令:【即可】 ./configure prefix=/usr/local/python3make &&make install完成!【这个图是另一个服务器的】...原创 2022-05-19 20:40:01 · 484 阅读 · 0 评论 -
【odoo15】odoo中的4种 init hook
通过data/xxx.xml的方式自动产生一些预设资料,xml,是不是我们的简单逻辑比较,这个时候,就可以通过hook的方式比较。__manifest__.py代码:{ ...... 'pre_init_hook': 'pre_init_hook', 'post_init_hook': 'post_init_hook', 'uninstall_hook': 'uninstall_hook', 'post_load': 'post_load_hoo.原创 2022-05-19 13:14:59 · 775 阅读 · 0 评论 -
【odoo15】如何使用 python xmlrpc 连接 odoo
odoo这个开源ERP,允许外界使用xmlrpc远程过程调用,实现增删改查。连接odoo代码:【 xmlrpc/2/common 提供无需身份验证的元调用。】import xmlrpc.clientfrom pprint import pprinturl = 'http://127.0.0.1:8069'db = 'fxl'username = 'fxl'password = 'fxl'def common_version(): # provides meta-call原创 2022-05-18 17:04:07 · 88962 阅读 · 0 评论 -
【owl】OWL之动画
一个简单的css特效:点击后会有一个transition过渡动画的效果,这里叫做t-transitiontransition这个属性本就是css3的一个属性,只是在odoo里边也通用,owl第一节中就讲了这个过渡动画。示例代码 h5:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>index_05_17</ti..原创 2022-05-17 10:56:27 · 264 阅读 · 0 评论 -
【odoo15】由于目标计算机积极拒绝,无法连接。
遇到了一个小问题,当我想在终端pip配置清单的时候,报了一个错误如下:首先想的就是网络问题,切换了wifi用手机热点试了一下,问题依旧无法解决。所以可能是网络设置问题。发现代理开着:关闭代理服务器后,问题解决:...原创 2022-05-09 16:12:14 · 857 阅读 · 0 评论 -
【odoo15】在odoo中隐藏一个官方的菜单项Customers
在二次开发的过程中有的菜单项用不着,就需要把它删除,但是删除可能会导致莫名其妙的错误,所以就它隐藏起来是最优的选择。隐藏一下这个二级菜单【客户】 (Customers)原来有xpath插入过字段的tree就无法隐藏。所以隐藏这个【Customers】效果如下:代码如下:继承这个模型:【sale.order】 init里要引入,权限得写。from odoo import fields, models, api, _class testInherit(models.M..原创 2022-04-30 01:53:03 · 1273 阅读 · 0 评论 -
【odoo15】有关变体的设置以及不同变体的加价
设置页面里可设置库存的设置 ------- 产品里有变体的属性设置(突然看到这个设置,记录一下)可以自行创建属性值:库存产品里就可以针对某个产品来添加变体属性。也能针对不同颜色会存在的价格差异来选择【 累加单价】红色的比其他的贵五块钱看到记录一下而已,odoo的知识多而散,边学边忘。 QWQ...原创 2022-04-28 16:52:07 · 843 阅读 · 0 评论 -
【odoo15】继承并为odoo选择字段中的特定位置添加值,selection_add的添加顺序。
就用上篇博客中继承的官方模模块的产品界面做演示。【产品类型的字段为 detailed_type】我们在product里的product_template.py直接ctrl+f 【detailed_type】就找到了。是一个fields.Selection字段。但是只有【能消耗】与【服务】两个字段。实现的效果是把这个Test移动到服务的上边:代码:selection_add=[(你添加的选项), (官方的选项名)] 就添加到这个service上边了from odoo imp.原创 2022-04-26 21:34:47 · 892 阅读 · 0 评论 -
【odoo15】关于odoo中的删除,以及选择字段的Ondelete用法
写一个模型继承官方模块【销售——>产品 】往【产品类型】detailed_type里边添加一个新的类型Test:产品类型的Field为 detailed_type 鼠标放上去就能看到。代码如下:manifest的【depends】里也得配置。'depends': [ 'product']from odoo import api, fields, modelsclass Testondelete(models.Model): _inherit = 'product....原创 2022-04-26 20:55:52 · 2568 阅读 · 0 评论 -
【odoo15】odoo中禁用Many2one的打开和创建编辑选项,以及ManyOne小部件的默认Options用法
点击many2one字段时可以直接跳转到关联字段的表:添加 options={'no_open': True}"后就禁止跳转,就变成了一个普通字段。在编辑Many2one字段时:正常情况下可以自己创建新产品不需要创建时可设置 options={'no_create': True}"即可:代码添加到form视图的field即可<field name="product_id" options="{'no_open': True,'no_create': True.原创 2022-04-26 14:24:43 · 1735 阅读 · 0 评论 -
【odoo15】使用函数解析器创建PDF报告,用时间段筛选数据
承接上一篇博客,简单修改一下上节的向导模型文件与domain域的筛选,做一下筛选用户在搜索的时间段内的订单情况。打印的流程已经捋顺清楚:首先创建向导模型——>向导视图中有按钮button链接的就是def的方法——>方法的return就是report.xml的ID——>然后这个report会找到模板——>模板负责打印出行和列的数据。用户与日期如图所示,查询用户【张三】在4月2日与10日之间的订单并进行打印【结果如下】查询用户【张三】在4月10日与20日.原创 2022-04-24 21:50:14 · 625 阅读 · 0 评论 -
【odoo15】odoo中用向导创建PDF报告,并添加简单的打印条件
添加了一个三级菜单,由此创建向导,可选择按照性别分类进行打印,打印符合条件的PDF报表 打印出的PDF表如图所示:代码部分:先写向导部分,创建一个新的向导 patient_report:【向导文件放在wizard里】py文件代码:【all_patient_report.py】from odoo import fields, models, api, _class PatientReportWizard(models.TransientModel): _nam.原创 2022-04-24 16:55:26 · 1495 阅读 · 0 评论 -
【odoo15】在odoo中添加搜索面板,更换功能的显示图标
代码如下:在xml的搜索视图里添加:<searchpanel> <field name="state" string="状态" enable_counters="1"/></searchpanel>【enable_counters="1"】为显示计数,添加后将为显示数量作为对比再添加一个性别字段的搜索面板:并且在状态字段里添加新属性:select="multi"代码如下: <searchpanel> ....原创 2022-04-20 20:04:08 · 1742 阅读 · 0 评论 -
【odoo15】在odoo中给窗体视图添加功能区,给归档的数据做一下标识
昨天的微博里写了一下如何添加归档操作减少服务器的压力,但是没有增添归档标识,和官方的有点差异,今天来添加这个web视图。一行代码即可:添加后如图所示:(还能修改颜色,以及内容)代码:在from表单的sheet下添加就行:【title】与【bg_color】可更改 <widget name="web_ribbon" title="Archived" bg_color="bg-danger" attrs="{'invisible原创 2022-04-20 18:47:32 · 691 阅读 · 0 评论 -
【odoo15】odoo中如何卸载模块,解决无法进入系统的问题
群里看到的,非原创。暂且还没试过,记录一下以后能用得着:在进行odoo模块安装或者更新时,由于种种原因导致系统出错或者崩溃(IntermalServerError)无法进入,又或者模块问题无法在系统应用界面进行卸载,普通方法是查看日志,移除相关模块,修改问题代码,重启系统等。但很多时候往往都不凑效,依然无法进入系统,有时不得不重建数据库,相当头疼。本文介绍另外一种方法,可快捷、利索、干净的解决这个问题。1.用odooshell启动系统pythonodoo-binshell-codoo....原创 2022-04-20 18:18:38 · 1305 阅读 · 1 评论 -
【odoo15】在odoo中使用位置移动属性更改字段
更换Age字段与Gender字段的位置:更改位置后:代码:写一个继承视图xml:加到manifest中即可:继承的就是这个视图:mysale.mysale_tree<odoo> <data> <record model="ir.ui.view" id="view_partner_tree"> <field name="name">mysale_partner</field>..原创 2022-04-20 17:59:40 · 626 阅读 · 0 评论 -
【odoo15】在odoo中添加存档和取消存档的操作,以及一个过滤器filter来查看已归档的记录
使用归档操作可以减轻服务器的压力,归档不等于删除,还能看到已归档的数据并且把它还原,非常有必要了解的一个功能。使用过滤器能找到已归档的用户首先在py文件中添加关键属性active:active = fields.Boolean(string="Active", default=True)然后在form的视图文件中添加:【invisible属性为:看不见的=true】<field name="active" invisible='1'/>添加一个控制器:...原创 2022-04-19 17:31:55 · 1695 阅读 · 1 评论 -
【odoo15】在odoo中添加智能按钮Smart Buttons做一个统计的简单逻辑
在mykid的视图里添加一个智能按钮,可以显示出该用户的订单数量有几笔点击后可跳转至筛选后的tree页面,展示详细订单。代码部分的xml视图,添加到 mykid_form视图中:【升级后就能看到智能按钮的图标,可以先不写逻辑,直接【action_mykid】里边print看一下效果也行】其中【value2】是一个计算字段。智能按钮的图标icon,按钮名<span>按钮名</span>可以根据自己需要的按钮功能来更改,button的name为action_my原创 2022-04-19 16:05:32 · 905 阅读 · 0 评论 -
【odoo15】创建odoo服务器动作URL Action以及拼接URL
点击按钮后通过py里边写的url进行跳转: 代码部分: xml代码:添加一个按钮即可:<header> <button id="button_url" name="action_url" string="测试URL" class="btn-secondary" type="object"/></header>代码部分: py代码:【target可以选择当前页面跳转或者新页面跳转】 def action_url(self):原创 2022-04-18 16:39:09 · 911 阅读 · 0 评论 -
【odoo15】创建odoo服务器动作Server Action
创建一个server action用来批量处理审批订单,以前写过但是当时并不了解这个东西。【服务器动作通常用来做批量处理,而且很方便】 点击【Confirm My sale】后状态为【确认】代码:xml<!-- server action 视图 --> <record id="action_confirm_mysale" model="ir.actions.server"> <field name="name">Conf原创 2022-04-18 15:42:21 · 1119 阅读 · 0 评论 -
【odoo15】在odoo中创建Excel报表中用到的一些零碎知识,承接上篇博客。
sheet.write(0, 0, obj.name, bold) 坐标显示(0,0)改成(1,1)坐标,再次运行:from odoo import api, fields, models, _class report_card_Excel(models.AbstractModel): _name = 'report.mysale.report_mysale_demo_xlsx' _inherit = 'report.report_xlsx.abstract'原创 2022-04-15 17:28:03 · 943 阅读 · 0 评论 -
【odoo15】在odoo中创建Excel报表
输出一个名片格式的Excel表:先安装odoo15的report_xlsx插件,复制文件夹粘贴到同级目录或者系统addons都行。下载地址如下:网盘里存的也是这个:(打不开的可以直接下载网盘那个,链接在下边)Base report xlsx | Odoo Apps Store链接:https://pan.baidu.com/s/1p6rmmCWzgRyV4GcIJF6YTQ提取码:ybpt在控制台引入这两个包模块安装完成后: 设置-->技术-->报告--&.原创 2022-04-14 23:18:04 · 2210 阅读 · 0 评论 -
【odoo15】在odoo中创建PDF报告
示例:pdf输出打印报告前置准备:安装PDF报表插件,不然会直接报错。(直接下载即可)链接:https://pan.baidu.com/s/1lm_DZjNiLf2kx4thcVY7zw提取码:f1a6配置path路径:在odoo.conf文件中引入路径:(控制台有如下输出即为成功)代码部分:新建report文件夹:report.xml代码:<?xml version="1.0" encoding="UTF-8" ?><odoo&g..原创 2022-04-14 14:51:14 · 1188 阅读 · 0 评论 -
【odoo15】在odoo中继承和添加菜单到现有模块
如图所示继承sale模块并添加一个三级菜单先写继承模型:并添加到models的__init__.py文件中:from odoo import models, fields, apiclass testorder(models.Model): _inherit = 'sale.order' test_order = fields.Char()继承时不需要重新生成模型,下边直接添加新字段(test_order)就行。继续写xml视图文件:<?xml v.原创 2022-04-13 19:30:35 · 1613 阅读 · 0 评论 -
【odoo15】在Many2One的字段中显示字段值的组合
在name这个字段中添加name与serial_number的组合代码部分:serial_number = fields.Char(string="序列号", copy=False, readonly=True, default=lambda self: _('NEW'))name = fields.Char(tracking=True, required=True) def name_get(self):原创 2022-04-13 17:00:53 · 791 阅读 · 0 评论 -
【odoo15】使用@api.constrains装饰器进行重名验证以及年龄约束
重名验证效果:代码如下:首先还是要引入odoo的异常类from odoo.exceptions import ValidationError@api.constrains('name') @api.constrains('name') def check_name(self): for rec in self: print(rec) print(rec.name) print(r..原创 2022-04-13 16:12:13 · 603 阅读 · 5 评论 -
【odoo15】在odoo中覆盖Unlink方法,显示删除时的验证信息
有些表不能删除,就比处于完成状态下的订单表,所以为了防止误删,可以重写删除方法,加以保护。如图所示:代码:py代码:(当state状态为done时不可删除) def unlink(self): print("删除成功") if self.state == 'done': raise ValidationError("你不能删除表单号为%s,因为此表单已完成done" % self.serial_number) ret原创 2022-04-12 18:53:09 · 1166 阅读 · 0 评论 -
【odoo15】在odoo中覆盖复制功能 def copy()
如图所示,点击完复制后本应直接生成一张新的一模一样的表,但是有的字段不需要复制,有的字段可能会重名无法,混淆之前的和复制过后的,造成麻烦。重写后的复制方法:代码如下:py文件:from odoo import fields, models, api, _class mygrandson(models.Model): _name = "mygrandson.mygrandson" _description = "mygrandson模块" _rec_nam.原创 2022-04-12 17:41:26 · 1291 阅读 · 0 评论 -
【odoo15】给One2Many的notebook增添权限
承接上节:变成了只读,无法添加修改数据。代码:xml: <page string="my notebook" name="mysale_notebook"> <field name="O2M_line_ids" readonly="1"> <tree create="0" delete="0" edit="0">原创 2022-04-12 16:06:06 · 266 阅读 · 0 评论