Python odoo
程序猿-张益达
我们登上并非我们所选择的舞台,演出并非我们所选择的剧本
展开
-
Python urllib.quote 解决Python传递中文参数给URL
今天有个需要需要传递中文参数给URL但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误。烦的很。所以我们果断选择用urlencode来处理中文,由于国内外网站编码不同,国内是GBK的,国外是UTF8的。>>> import sys>>> sys.stdin.encoding'GBK'表示我们的环境是GBK的>>> import urllib>>> urllib.quote('编码坑爹'原创 2021-11-25 18:05:11 · 454 阅读 · 0 评论 -
odoo 前端显示实数小数指定精度位
前端浮点类型指定精度我们经常在写代码的过程中遇到,后端需要保存长精度的Float型数据,但是在前端展示的时候,为了美观好看,要求将数据四舍五入,只展示2位小数就可以了,这个时候就可以在节点里添加新属性digits="[16,2]"意思是16位整数,2位小数<?xml version="1.0" encoding="utf-8"?><odoo> <data noupdate="1"> <record forcecre..原创 2021-11-22 15:56:23 · 894 阅读 · 0 评论 -
odoo tree视图 底部显示合计
odoo的tree视同中 可以在每页的最后一列显示该页数的的某一个数值类型的列的数据总数图示:重量就是一个数值类型的列 我们可以在 每页的最后显示该列的总数箭头所示的就是该列的总数代码如下:在tree视图中增加: <field name="qty" sum="Qty"/>sum 就是计算该列总数的插件...原创 2021-11-19 16:20:28 · 834 阅读 · 0 评论 -
odoo10 动作 wizard 向导页的使用方法
概述Odoo 中有不少地方涉及对话向导页面模式,这种功能页很方便灵活,可以随意产生自已定义的表单/动作交互操作流,下面我们就举例讲解具体使用方法向导以动态形式描述与用户(或对话框)的交互式会话。向导与其他的模型不同,其基类是TransientModel而不是常见的Model。TransientModel类扩展自Model,并使用了其所有机制,具有以下特殊性:向导记录不是永久性的,会在一段时间后自动从数据库中删除。这就是为什么他们被称为瞬态。 向导模型不需要访问权限:用户拥有向导记录的所有权原创 2021-11-19 16:11:38 · 882 阅读 · 2 评论 -
odoo中的视图标签(自用)
前端常用视图标签:学习了一段时间odoo,从中学习到了哪些标签是比较重要的,以及经常使用到的便签属性。field标签包括常用的属性有 name 、string、placeholder、widget、domain、attrs、options等1.name属性name属性值是model,关联的是模型名称,表示该视图关联的模型,对应到数据库就是数据库中的某张表,模型中放的字段就是对应到数据库表中的字段。name属性值为name表示页面的名称;“arch”表示视图布局的描述,采用的是xml来原创 2021-11-15 17:51:00 · 656 阅读 · 0 评论 -
odoo 10: 权限安全(security)
Odoo 中使用安全组来实现,权限授予组,组中分配用户。Odoo 应用通常有两个组:针对普通用户的用户组,包含额外应用配置权限的管理员组。1. 安全组(group)security/模型名_security.xmlsecurity/ir.model.access.csv(1)建立安全组(security/activity_security.xml)字段类型 说明 name 用户组组名 category_id 关联应用,这是一个关联字段,因此使用了 ref 属性来原创 2021-11-15 17:46:22 · 247 阅读 · 0 评论 -
odoo relate用法
related:字面意思-关联字段,表示本字段引用关联表中的某字段。格式为:fields.related(关系字段,引用字段,type,relation,string,...),关系字段是本对象的某字段(通常是one2many or many2many),引用字段是通过关系字段关联的数据表的字段,type是引用字段的类型,如果type是many2one or many2many,relation指明关联表。示例:address = fields.one2many('res.partner.ad原创 2021-11-15 17:43:15 · 507 阅读 · 0 评论 -
odoo 关于self(使用操作)
一:self是什么 目前新版的Odoo中使用到的self,是对 游标cr、用户ID、模型、上下文、记录集、缓存 的封装。 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr、self.uid。二:通过直接设置属性来改变数据库中字段值 我们在查出某模型的记录后,可以通过 record.XX = value 来直接修改记录的字段内容。 同样,在重写模型的write方法中,也可以通过 self.XX = value 来指定新增记录中某字段...原创 2021-11-15 17:34:01 · 1218 阅读 · 0 评论 -
odoo 构建模块(构建命令和目录含义说明)
启动/停止Odoo服务器Odoo采用C/S架构,客户端通过Web浏览器访问服务端,遵从RPC协议。业务逻辑和扩展通常在服务端执行,而只有添加客户端支持的新特征才会在客户端添加代码(例如,交互过程中新数据的映射表示)。启动服务器,只需要在shell中调用命令odoo-bin,或者完整的路径名调用:odoo-bin通过Ctrl-c或杀死相应的系统进程来停止Odoo服务。构建一个Odoo模块服务端扩展和客户端扩展都被封装为模块,这些模块可选择性的被安装,安装完成后通过数据库来加载。模块即可以原创 2021-11-15 17:16:13 · 1360 阅读 · 0 评论 -
odoo 列表tree视图 拖拽排序(自定义排序方式)
实现效果:实现方式:模型中定义字段:class CusYourModel(models.Model): """ 你的模型 """ _name = 'xxxxxxx' _order = "sequence, id" sequence = fields.Integer(string='Sequence')前端view视图增加相应字段:<tree string="xxxxxxxxx"> <field n.原创 2021-11-11 11:54:09 · 838 阅读 · 1 评论 -
odoo10 ORM 使用说明(自用)
一 模型使用模型的属性结构:_name 业务对象的名称_rec_name 可选的name字段名称,供osv的name_get()方法使用,默认值name_inherit 如果设置了name属性,它的取值是单个或多个父级的模型名称;没有设置name属性时,只能是单个模型名称_order 在搜索的时候的默认排序,默认值是id_auto 指定该表是否需要创建,默认值是True,如果设置成False需要重写init方法来创建表_table 当_auto设置成false时,该值为创建的表名;默认情原创 2021-11-11 16:41:58 · 352 阅读 · 0 评论 -
odoo10 read_group()用法
read_group(domain, fields, groupby, offset=0, limit=None, orderby=False, lazy=True)得到一个通过groupby参数分组后的记录的列表功能:1、domain 过滤条件2、fiedls 返回需要的字段值。且可以使用数据库标准函数组件:(如:sum、count、avg等)用法:fields:sum3、groupby :传入需要分组的字段,且也支持各种函数,如: 时间按照周进行分组,月进行分组、天进行分组。4..原创 2021-11-09 16:01:20 · 278 阅读 · 0 评论 -
odoo10 获取当前登录用户ID
前端<field name="domain">[('create_uid', '=', uid)]</field>后端self.env.uidself.env.user.id原创 2021-11-09 15:46:00 · 1135 阅读 · 0 评论 -
Python map() 函数
描述map()会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。语法map() 函数语法:map(function, iterable, ...)参数function -- 函数 iterable -- 一个或多个序列返回值Python 2.x 返回列表。Python 3.x 返回迭代器。实例以下实例展示了 map() 的使用方..原创 2021-11-08 16:10:03 · 131 阅读 · 0 评论 -
Odoo 字段设置唯一不重复
一、字段增加唯一约束前台违反约束效果:后台模型中定义代码:括号中三个参数依次是约束定义名、约束定义内容、弹出提醒内容。在_sql_constraints定义中可以填写多个字段的约束定义,每个用()包裹,之间用逗号分隔开即可。name = fields.Char(string="Name", copy=False) # 流水号 _sql_constraints = [('dec_name_uniq', 'unique(name)', 'error message dec n.原创 2021-11-04 14:15:15 · 994 阅读 · 0 评论 -
Odoo domain写法及运用
字段名Domain是一个元组,由3个元素组成 (字段名, 操作符, 值)如果是Many2one/Many2Many/One2many字段,可以通过'.'取出对应的属性,如:('routing_id.operation_ids.workcenter_id','=', active_id)操作符符号 说明 =,>.<,>=,<=,!= 比较运算,等于,不等于,大于,大于等于,小于,小于等于 like 模糊匹配,通过%value%匹配原创 2021-11-03 15:35:12 · 1280 阅读 · 1 评论 -
前端-常用样式设计(自用)
网页常遇布局样式问题解决两个div并列同一行需求:两个div块级元素在同一行水平显示说明:两种方法来实现 1、两个div全部设置成display:inline-block; 2、前一个div设置成为:float:left后一个div设置为float:right<div> <div class="header"> <div class="left">hello</div>...原创 2021-10-28 11:57:31 · 699 阅读 · 0 评论 -
Python datatime使用
python中的datetime模块提供了操作日期和时间功能,该模块提供了五种核心对象:datetime时间日期类型 date日期类型 time时间类型 tzinfo时区类型 timedelta时间差类型今天为大家介绍一下datetime模块的具体使用方法与python日期时间计算与比较的相关实例一、日期时间模块datetime类(一)、datetime模块中包含如下类:类名 功能说明 date 日期对象,常用的属性有year, month, day ti原创 2021-10-26 14:28:07 · 3999 阅读 · 0 评论 -
Python 时间的基本处理(datetime)
datetime是Python处理日期和时间的标准库获取当前时间import datetime day = datetime.datetime.now()day2 = datetime.date.today()print("当前年月日时分秒:", day)print("只查看年月日:", day2) 执行结果: 当前年月日时分秒: 2018-09-19 21:18:57.132640 只查看年月日: 2018-09-19只查看时分秒import datetime .原创 2021-10-26 13:52:06 · 541 阅读 · 0 评论 -
Python 计算两个日期相差的天数
有时候需要算两个日期相差多少天,如果两个日期相差大,真的去数肯定很麻烦,还得计算有的是有三十天,有的是三十一天,还有闰年和平年的区别。而这时候如果有一个方法或者函数,只需要输入要计算的两个日期即可,那就方便快捷了很多。首先导入需要用到的时间和日期库,创建日期相差的方法函数: import datetime def count_differ_days(self, time_a, time_b): """ 计算日期相差天数 """ .原创 2021-10-21 13:53:57 · 9128 阅读 · 0 评论 -
“Entity ‘nbsp‘ not defined”的解决办法
在Odoo中写 后,运行时报错: 是HTML实体,但XHTML用的是XML规则,它只定义了&、>和<这3个命名实体。因此正确地方法是使用Unicode character code,也就是 。其他的字符转换可以看该文列出的表格。此外,HTML也是有 的,因此直接把 改成 不会有兼容性问题。将 换成 完美.原创 2021-10-21 13:28:26 · 643 阅读 · 0 评论 -
odoo默认搜索功能
实现odoo搜索框默认搜索条件<record id="view_special_search" model="ir.ui.view"> <field name="name">special_drug_search</field> <field name="model">special_drug</field> <field name="arch" type="xml">原创 2021-10-18 10:06:03 · 742 阅读 · 0 评论 -
odoo命令行卸载模块
1.shell启动odoopython odoo-bin shell -c odoo.conf -d 数据库名启动成功截图2.命令行卸载self.env['ir.module.module'].search([('name', 'like', '需要卸载的模块名')]).button_immediate_uninstall()3.卸载成功原创 2021-10-18 09:42:12 · 737 阅读 · 0 评论 -
PostgreSQL还原.bak文件
常规操作1.win+R输入cmd2.cd C:\PostgreSQL\10\bin3.还原之前首先在postgresql中新建数据库,作为目标数据库4.在postgresql对目标数据库执行create extension postgis;语句,确保空间数据加载正常,同时生成表spatial_ref_sys5.psql -h localhost -U postgres -p 5432 -d DBtext -f "E:\DBtext .bak"6.用户 postgres 的口令:输入密原创 2021-10-13 18:37:28 · 1447 阅读 · 0 评论 -
odoo 10 使用说明(一:ORM API)
odoo 搜索 search search: 用法 self.env['模型名'].search([('name', '=', '示例')]) search_read : 用法 search_read([damain], [字段名]), 汇聚成一个list 列表,内置id值, 可选参数 , order 排序, limit 记录条数, 用在接口,数据库之间数据传输很方便 mapped: 用发 records.mapped('name'),汇聚成一个列表,也可于s..原创 2021-09-30 11:50:49 · 273 阅读 · 0 评论 -
Python filter() 函数
描述filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。注意:Python2.7 返回列表,Python3.x 返回迭代器对象。语法以下是 filter() 方法的语法:filter(function, iterable)参数function -- 判断函数。..原创 2021-09-29 14:22:54 · 75 阅读 · 0 评论 -
Python lambda函数用法
案例例1:传入多个参数的lambda函数def sum(x,y): return x+y用lambda来实现:p = lambda x,y:x+yprint(p(4,6))例2:传入一个参数的lambda函数a=lambda x:x*xprint(a(3)) # 注意:这里直接a(3)可以执行,但没有输出的,前面的print不能少 例3:多个参数的lambda形式:a = lambda x,y,z:(x+8)*y-zprint(a(5,6原创 2021-09-29 14:03:44 · 161 阅读 · 0 评论 -
Python倒序循环列表(序列)
1.如果要倒序遍历访问序列中的元素,可以对该序列使用reversed() 函数,reversed函数会生成一份倒序列表的拷贝,但是不会改变原列表。这个函数理解起来很自然,例如 for i in reversed(list),示例代码:>>> lista = [1,2,4,5]>>> for i in reversed(lista): print(i)5421>>> lista # lista的值不变[1, 2, 4, 5].原创 2021-09-27 10:52:11 · 2023 阅读 · 0 评论 -
Python 数字以规定格式化输出
数字的格式化输出在odoo中写Float类型引用时,遇到数字需要加上千位符,odoo在Float类型中自动加上了千位符,所以直接正常使用源生就好了,但是需求要求在数值没有值的时候自动显示为空,但是odoo中源生的Float类型默认空值为0.00,所以无法修改成空值,没有办法只能将Float类型转换成Char类型,但是转换以后,末尾的两位小数就只剩一位了,千位符也不见了,这种情况下,可以用Python中的format函数解决该问题。解决方案格式化输出单个数字的时候,可以使用内置的forma..原创 2021-09-23 10:33:28 · 1158 阅读 · 0 评论 -
Odoo 组件动态显示
在attrs 属性里加上'invisible':[('state','=','done')]}"这个参数,[('state','=','done')]是显示条件 <field name="to_approve_user_id" string="待审核人" context="{'sale_price_approve':True}" attrs="{'readonly':[('state','!=','draft')..原创 2021-09-22 16:08:35 · 230 阅读 · 0 评论 -
Odoo 模型字段自动计算(compute)
在odoo的ORM创建数据字段的过程中,我们会经常需要定义一些字段用来计算某一些字段只和或其他计算结果。今天介绍一个很好用的方法compute计算属性,这个方法其实是属于写在odoo fields中的属性,但是因为非常常用,还涉及ORM中的方法所以今天就单独列出来详细讲解它的用法。如何使用odoo compute属性实现自动计算字段我们看下面的案例class FandxProduct(models.Model): _name = "fandx.product" na..原创 2021-09-22 15:52:31 · 1566 阅读 · 3 评论 -
Odoo 在菜单后边显示提示有消息数字
Odoo可以显示一个在菜单后边显示一个提示性数子,提示用户有多少个待处理文档为了实现这样的效果,先要在自己的 model 继承ir.needaction_mixin:_inherit = ['ir.needaction_mixin']然后你需要定义一个方法 _needaction_domain_get,返回一个记录的集合.记录的个数将显示在菜单上@api.modeldef _needaction_domain_get(self): return [('state', '=.原创 2021-09-22 14:34:43 · 337 阅读 · 3 评论 -
Odoo10 学习使用遇到的坑(问题总结)
1.·ValueError: check_hostname requires server_hostname下载依赖模块库时遇到的问题,不停的下载错误,找了一圈最终发现是自己的VPN开了导致的网络错误,关掉VPN就恢复正常了2. odoo显示依赖模块没有安装一开始以为是部署odoo环境的时候,odoo内的依赖模块没有升级更新,但是升级更新后还是一直提示该模块没有依赖成功,接着又连续更新升级了该依赖模块的所有依赖模块,发现还是一直提示该模块没有依赖成功,最终发现,需要需要安装依赖模块的模原创 2021-09-18 09:51:22 · 301 阅读 · 0 评论 -
Odoo 通过ORM 操作数据库(模型数据增删改查)
一.增1:create():返回新创建的记录对象self.create({'name': "New Name"})二.查search() :返回数据集1:查询模型内全部数据course_list = self.env['student_achieve_manage_sys.course'].search([])for item in course_list: print item.name print item.id2:查询指定条件数据接收domain.原创 2021-09-10 15:08:02 · 971 阅读 · 0 评论 -
Odoo 控制台Error输出\u字符乱码
在写Odoo框架的时候报错出现下列类似\u8bf7\u6c42\u6210\u529f\u字符乱码,是因为odoo自带的框架机制导致的,不能正确识别中文内容,所以才输出了Unicode的字符乱码只需要将Unicode的字符乱码报错信息,复制粘贴到Unicode转中文的网站,转换一下中文形式,就可以正确阅读报错内容了Unicode转换中文网站...原创 2021-09-10 14:46:56 · 2050 阅读 · 0 评论 -
Odoo 下拉框组件使用
1. 常规的下拉框Selection内容(固定的)my_module/views/views.xml<?xml version="1.0" encoding="utf-8"?><record id="view_form_student_achieve_manage_sys_course" model="ir.ui.view"> <field name="name">课程信息</field> <field name="model">原创 2021-09-10 14:23:27 · 953 阅读 · 0 评论 -
Odoo tree视图数字字段居左显示
odoo的tree视图如果与数字类型的字段,字段名称和字段的值总是居左显示,这欧洲人习惯(因为数字居左显示方便数字的比较)作为一个中国人,反正我是非常的不习惯,于是决定研究一下,改掉它。从项目的角度出发,源码肯定是不能直接改的,我们一般是在自己的模块中修改。下面将介绍实现方式,其实很简单,只需要三步:1、自定义样式创建一个css文件 my_module/static/src/css/tree_number_field.css@charset "utf-8";/* 方式一: 全局修改..原创 2021-09-10 13:53:51 · 467 阅读 · 0 评论 -
Odoo10 快速创建第一个模块
我的是Windows平台,已经搭好Odoo10的环境了,直接开始吧。在命令行终端中输入命令:python odoo-bin scaffold classroom myaddomspython odoo-bin: 执行Odoo源码目录下的odoo-bin文件,也就是启动文件scaffold:脚手架,一个完整的模块classroom: 模块名myaddoms:脚手架的上一级目录名(这里可以省略)执行完命令之后的目录结构:MVC架构,其中controller存放的是控制层的py文件、de..原创 2021-09-06 16:25:16 · 143 阅读 · 0 评论 -
Python 2.7 结合odoo(使用时遇到的的坑)
pip因需要更新无法正常使用项目用的是python2.7版本,准备项目的时候 随手就在官网上下载了python2.7.5版本然后在使用pip install XXX的时候,出现了一下名称的警告,导致模块包无法下载显示提示的pip up命令要求升级pipInsecurePlatformWarningSNIMissingWarning试过多种升级方法,全部都升级失败了,崩溃之下,卸载了2.7.5版本安装了2.7.18版本以后,可以正常使用pip下载模块了(已亲测解决)本地导.原创 2021-09-02 17:20:03 · 461 阅读 · 0 评论