东木月
编程是为了更深刻的了解这个世界,或者作为自己的职业谋生存。 读书是为了让自己的灵魂得到升华,照亮自己的同时也指引他人。旅行见天地,读书明事理,工作合行知。
展开
-
odoo对many2many、one2many的操作
odoo对many2many、one2many的操作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,[原创 2021-04-14 14:18:05 · 1248 阅读 · 0 评论 -
odoo隐藏动作中的按钮
隐藏动作中的按钮代码如下:from odoo import models, fields, apiclass SaleOrder(models.Model): _inherit = 'sale.order' @api.model def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): res = super(SaleOrder原创 2021-04-14 14:17:33 · 1206 阅读 · 0 评论 -
odoo在windows下无法使用debug调试
pycharm在windows10下使用debug在odoo源代码odoo/odoo/tools/translate.py中的函数resetlocale中增加以下语句:# 解决pycharm无法 debug 的问题ln = ln[0:ln.index('.')]如图:后记【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。也可加我微信【1257309054】,拉你进群,原创 2021-04-14 14:16:26 · 500 阅读 · 0 评论 -
odoo的api接口
在controllers层添加urls,可以自定义返回数据格式,json,字符串,html页面、重定向url等对内api内部访问,只能内部通过rpc来访问import jsonfrom odoo import http, fieldsfrom odoo.http import requestclass GetPartner(http.Controller): @http.route('/api/partner', auth='user') def partner(self,原创 2021-04-14 12:44:44 · 2948 阅读 · 0 评论 -
odoo的定时任务与异步任务
定时任务与异步任务定时任务Odoo中内置了一个定时任务模型 ir.cron ,它定义了一套 定时、自动执行的规则。可以通过创建 ir.cron 的模型记录来创建定时任务,一条记录就是一个定时任务。1、先在业务模型中定义要定时执行的函数。2、通过data文件,创建一条定时任务记录(往ir.cron模型插入一条记录)<?xml version="1.0" encoding="UTF-8"?><odoo> <data noupdate="1">原创 2021-04-09 17:57:38 · 2624 阅读 · 4 评论 -
odoo显示字段值修改记录
显示字段值修改记录效果:myproject/my_first_app/models/course.py# -*- coding: utf-8 -*-from odoo import models, fields, apiclass Course(models.Model): """ 课程 """ _name = 'myproject.course' _inherit = ['mail.thread'] # 继承mail.thread保存字段值修改记录原创 2021-04-09 16:44:54 · 1010 阅读 · 0 评论 -
odoo的tree视图导入后面增加一个按钮
在tree视图“导入”按钮后面增加一个按钮js文件在模块下面增加一个js文件,test_button.js内容如下:odoo.define('my_first_app.course.tree.button', function (require) { "use strict"; var ajax = require('web.ajax'); let ListController = require('web.ListController'); ListControlle原创 2021-04-09 16:21:25 · 969 阅读 · 0 评论 -
20、odoo时间转换成当前时区时间
odoo时间转换odoo默认使用的是0时区时间(与我们东八区差8个小时),但在显示层会根据用户选择的时区来显示当前用户的时区,比如管理员在设置->用户->首选项->时区中选择“Asia/Shanghai”,那么管理员看到的就是东八区的时间。但有时候有些场景需要把0时区的时间转换成当前时区 的时间,可使用以下的代码转换:import datetimeimport timeimport pytzcreate_date = '2016-05-05 20:28:54' # 需要原创 2021-04-09 15:28:31 · 1414 阅读 · 0 评论 -
19、odoo中止模块更新
中止模块更新odoo有些模块更新时可能需要很长时间,影响其他生产流程,可以通过执行sql语句中止模块安装-- 查询有多少正在更新的模块SELECT * from ir_module_module WHERE "state" like '%up%';-- 模块更新的状态类型SELECT state from ir_module_module GROUP BY "state" ;-- 把正在更新的模块改为已更新完的状态UPDATE ir_module_module set state='insta原创 2021-04-09 14:57:39 · 358 阅读 · 0 评论 -
18、odoo添加自定义筛选、分组时加载所需字段
添加自定义筛选、分组时加载所需字段需求:在筛选、分组中添加自定义条件时默认加载所有model中的字段,这样不是很友好,那怎么样才能只加载所需的字段呢?方案:创建一个my_bass_model子应用,进入项目根目录cd myprojectpython D:\learn\odoo_learn\odoo\odoo-bin scaffold my_base_model .在models中添加一个fields_filter.py使用钩子重写AbstractModel中的fields_get()函数原创 2021-04-09 11:31:27 · 1248 阅读 · 0 评论 -
17、odoo的tree视图隐藏不需要的列
25、tree视图隐藏不需要的列重写fields_view_get函数即可,想隐藏的列可以通过系统参数设置,比如把订单中的source_id隐藏,在debug模式下,【设置】->【技术】->【系统参数】import refrom lxml import etreefrom odoo import models, fields, api, _class SaleOrder(models.Model): _inherit = 'sale.order' @api.m原创 2021-04-09 10:42:30 · 1194 阅读 · 0 评论 -
16、odoo输出日志信息
21、odoo日志记录使用log输出定义一个 _loggerimport logging_logger = logging.getLogger(__name__)class MyClass(models.Model): _logger.debug("Debug message") _logger.debug("Info message") @api.depends('attendee_ids') def _get_attendees_cou原创 2021-04-08 16:28:10 · 1604 阅读 · 0 评论 -
15、odoo的web服务与RPC调用
20、web服务与RPC调用(WebServices)odoo提供两种RPC接口, XML-RPC和JSON-RPC。XML-RPC库使用python内置的xmlrpclib# -*- coding: utf-8 -*-import functoolsfrom xmlrpc import clientHOST = 'localhost'PORT = 8199DB = 'learn_odoo_14' # s数据库USER = 'admin' # 登录odoo系统的登录名PASS原创 2021-04-08 16:21:05 · 1826 阅读 · 0 评论 -
14、odoo的仪表板
19、仪表板(Dashboards)通过定义仪表板,在其中添加多种视图。myproject/my_first_app/__manifest__.py 添加board依赖:'depends': ['base', 'website', 'board'],myproject/my_first_app/__manifest__.py'data': [ 'security/myproject_security.xml', 'security/ir.model.access.原创 2021-04-08 15:15:32 · 781 阅读 · 0 评论 -
13、odoo打印报表
18、打印报表(Reporting)从odoo8.0开始使用基于Qweb,Bootstrap和Wkhtmltopdf的全新报表引擎。一份报表由两个元素构成:1 在ir.actions.report.xml中定义报表记录,使用定义报表生成的参数。<report id="account_invoices" model="account.invoice" string="Invoices" report_type="qweb-pdf" name="accoun原创 2021-04-08 14:44:02 · 1047 阅读 · 0 评论 -
12、odoo的翻译与国际化
17、odoo的翻译与国际化翻译功能简述每个模块的翻译文件放在该模块目录下i18n目录里。模块内相关字符串一般用英语写成,然后通过翻译模板导出功能,导出一个翻译模板po文件。翻译人员使用翻译软件(poedit)进行翻译后,产生对应语言po文件,再放入i18n目录下供odoo加载。po文件的文件名规则一般由对应语言缩写或语言_国家组成,如中文为zh.po或zh_CN.po这一步实现很简单,只需要在odoo中实现翻译成中文即可在已有的模块中要把因为页面翻译为中文页面,如下打开开发者模式(原创 2021-04-08 14:24:17 · 956 阅读 · 0 评论 -
11、odoo的向导页面
16、向导(Wizards)在odoo中通过使用向导(Wizard)创建一个表单与用户进行交互。向导的model使用TransientModel定义,TransientModel继承自Model,并有下面的特殊功能:1 保存在TransientModel的记录会在提交完成后自动清理2 wizard记录没有必要指定访问权限,默认所有用户都可以访问。3 wizard记录中的字段可以通过many2one指向wizard对象或普通的model对象, 普通的model对象不能通过many2one指向wizar原创 2021-04-08 14:10:53 · 780 阅读 · 0 评论 -
10、odoo安全与权限
15、安全与权限(Security)在odoo中配置访问控制机制来实现连贯的安全策略。Odoo的权限的核心是权限组(res_groups)。基于组的访问控制机制。通过组权限来实现权限管理,组是保存在res.groups里的一些记录。菜单的权限可以通过xml中菜单的定义设置组权限。菜单下关联的model也要设置对象级别的访问权限(read读, write写, create增, unlink删),并关联到特定组。还有一些model.py里的做权限检查或xml定义中设置field相关的组。权限管理的原创 2021-03-29 15:10:01 · 817 阅读 · 0 评论 -
9、odoo高级视图
14、高级视图列表视图与日历视图Tree views列表视图可以通过一些额外的属性控制其行为colors属性语法 颜色:条件 如果条件为真,则列表行显示为前面的颜色,多个颜色条件之前用分号分割<tree string="Idea Categories" colors="blue:state=='draft';red:state=='trashed'"> <field name="name"/> <field name="state"/><原创 2021-03-24 10:44:59 · 766 阅读 · 0 评论 -
8、odoo模型中常用方法
10、Domain字段域设置在odoo中,通过domain来过滤数据记录,domain是一个list,里面有多个条件。条件是一个有3个元素的元组 (‘模型的字段’,’操作符’,’值’)。比如你要过滤出产品为服务类型并且价格大于1000的产品:domain = [(‘product_type’, ‘=’, ‘service’), (‘unit_price’, ‘>’, 1000)]domain作用在一个model上model.search(domain)默认的 domain是以and的方原创 2021-03-23 11:50:58 · 1003 阅读 · 0 评论 -
7、odoo的模型继承与视图继承
7、odoo的继承模型继承在Odoo中有两种模型的继承机制(传统继承方式和委托继承方式),以模块化方式扩展现有的模型。传统继承方式允许模块修改在另一个模块中定义的模型的行为:向模型添加字段,覆盖模型上字段的定义,对模型添加约束,向模型添加方法,覆盖模型上的现有方法。委托继承方式允许将模型的每个记录链接到父模型中的记录,并提供对父记录的字段的透明访问。也可以看看官方:传统继承方式 _inherit能够添加字段改写字段定义添加约束添加或改写方法,共有两种写法经典继承_原创 2021-02-25 17:57:43 · 1391 阅读 · 0 评论 -
6、odoo模型中的关联
模型中的关联概述一个模型中的记录可能关联到其他模型的记录, 例如销售订单记录会关联到一个包含客户信息的客户记录.为了说明数据关联, 首先增加新的模型.一个session是一个在特定时间针对特定听众讲授课程的过程. 需要为session创建相应的模型.session具有name, 开始日期, 持续时间以及座位数量等首先在myproject/my_first_app/models/session.py中创建Session类.# -*- coding: utf-8 -*-from odoo im原创 2021-02-25 10:27:07 · 955 阅读 · 0 评论 -
odoo隐藏form表单动作中的菜单
代码如下:from odoo import models, fields, apiclass SaleOrder(models.Model): _inherit = 'sale.order' @api.model def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False): res = super(SaleOrder, self).f.原创 2021-02-25 09:23:06 · 711 阅读 · 2 评论 -
5、odoo基本视图
5、基本视图视图定义了模型数据如何显示, 每种类型的视图代表一种数据可视化模式.基本的视图定义一个视图是以一条ir.ui.view模型数据的形式定义的.<record model="ir.ui.view" id="view_id"> <field name="name">view.name</field> <field name="model">object_name</field> <field name="原创 2021-01-13 17:49:10 · 544 阅读 · 0 评论 -
4、odoo数据文件、动作和菜单
odoo 数据文件、动作和菜单4、数据文件Odoo是一个高度数据驱动的系统, 虽然使用Python代码来定制模块行为, 但很多模块数据是在其载入时setup的, 并且有些模块仅仅为Odoo添加数据.创建一个数据文件创建一个data/course_data.xml,目录结构如图:文件中内容为:<odoo> <data noupdate="1"> <record id="course0" model="myproject.course" >原创 2020-12-25 15:31:38 · 848 阅读 · 0 评论 -
3、odoo对象关系映射
3、odoo对象关系映射ORM层是Odoo的一个关键组件, 它可以避免大部分的SQL语句编写从而提高扩展性和安全性. 业务对象用派生自Model的Python类(模型)来编写, 该类的_name属性定义了模型在Odoo系统中的名称.详情参考https://www.cnblogs.com/hellosen/p/11059367.html字段字段定义模型能够存储什么以及在哪里存储, 字段在模型类中用属性来定义。Boolean:布尔值。Integer:整形。Float:浮点型。Monetary:表原创 2020-12-17 14:22:57 · 636 阅读 · 0 评论 -
2、构建Odoo模块
2、构建Odoo模块模块组成业务对象业务对象声明为Python类,由Odoo自动载入。数据文件XML或CSV文件格式,在其中声明了元数据(视图或工作流)、配置数据(模块参数)、演示数据等。Web控制器处理Web浏览器发来的requests。静态web数据Web用到的图像,CSS或JavaScript文件。创建模块命令odoo.py提供了一个子命令scaffold(脚手架)可以方便地创建一个空的模块. 打开pycharm的Terminal,先创建一个learn文件夹,在Termina原创 2020-12-17 11:46:22 · 511 阅读 · 1 评论 -
没找到Wkhtmltopdf,报表会被显示为html
windows10 odoo 打印报表时提示 没找到Wkhtmltopdf,报表会被显示为html现象原因没有安装Wkhtmltopdf,没有配置环境变量,odoo在电脑系统中找不到Wkhtmltopdf.解决方案1、下载Wkhtmltopdf官网,然后安装,一般按默认路径安装,像我的安装在C:\Program Files\wkhtmltopdf2、添加电脑环境变量复制C:\Program Files\wkhtmltopdf\bin目录【此电脑】->【属性】->【高级系统设置原创 2020-11-20 10:40:32 · 1319 阅读 · 1 评论 -
1、如何快速在windows上创建你的第一个odoo项目
一、什么是OdooOdoo 是一系列开源商业应用程序套装(ERP企业管理系统),此套装可满足贵公司的一切应用需求,例如,企业基本的进销存、采购、销售、MRP生产制造、品保质量保障、企业招聘、员工合同、休假、午餐管理、内部论坛、车队管理、内部聊天IM沟通、客诉追溯管理、CRM客户关系管理、VOIP、E-Shop电子商务、网店、企业官方网站,财务会计、银行对账、资产管理、HR工资管理、预算管理、WM...原创 2020-03-22 19:43:40 · 1173 阅读 · 0 评论