
python
python采坑日记
_鹿哥
这个作者很懒,什么都没留下…
展开
-
odoo的controller层获取当前action的domain
odoo的controller层获取菜单action中的domain原创 2022-05-13 10:46:01 · 553 阅读 · 0 评论 -
odoo中one2many子表按条件隐藏行
odoo子表按条件过滤行数据原创 2022-04-01 20:54:16 · 923 阅读 · 0 评论 -
odoo命令行生成配置文件
要为odoo生成配置文件, 只需要在命令行将目录切换到odoo-bin所在的目录执行以下命令即可:./odoo-bin —save —config myodoo.cfg —stop-after-init原创 2022-03-10 09:12:33 · 2438 阅读 · 0 评论 -
odoo字段定义中的states属性用法
odoo字段定义属性之: states这个字段需要配合另一个selection字段使用, 查看odoo源码发现依赖的这个字段都被定义成state, 看字面意思states这个属性的作用应该是控制表单在流程状态中字段的状态, 具体依赖的字段是不是必须定义成state没有去深究, 有兴趣的小伙伴可以去研究一下,欢迎留言解释下面说一下这个属性的用法:state = fields.Selection([ ('draft', 'To Submit'), ('cancel'原创 2022-02-28 15:44:15 · 955 阅读 · 0 评论 -
odoo时间和日期字段默认值不对,出现时差问题
odoo时间日期默认值原创 2021-12-24 16:31:35 · 1121 阅读 · 0 评论 -
odoo计算字段重新计算odoo recompute
odoo计算字段如果是store=True存在数据库中的,不通过depends绑定的字段变化去触发计算,又想让计算字段重新计算一次值的时候,可以使用如下两种方法触发重新计算原理: 两种方法的原理都是通过api.py中定义的add_todo和recompute()方法触发字段的重新计算,add_todo函数的第一个参数需要传入一个字段对象,第二个参数是需要重新计算的记录方法1: odoo脚本运行模式,即odoo shell模式>>> model = env['模型名称']原创 2021-11-02 16:54:57 · 886 阅读 · 0 评论 -
odoo继承过来的模型定义_rec_name不生效解决办法
odoo模型有几个常用的属性,比如_rec_name。如果继承别的模型重新定义了_rec_name,你会发现你数据库中的字段存在,但是_rec_name并没有生效下面说一下解决办法:重新定义的_rec_name需要重写name_get函数才能生效,name_get是关系型字段,下拉框点击时调用获取下拉列表的函数,需要返回一个[(),(),(),()....]格式的数据 @api.multi def name_get(self): return [(record.i原创 2021-10-13 15:08:49 · 737 阅读 · 0 评论 -
odoo只读字段和related字段保存时获取值 force_save
odoo中如果是只读字段和related字段这中在视图中只读的字段,你会发现,在create和write函数中传入的参数vals值中是没有的,无法直接从vals中获取。那怎么样可以让create函数和write函数获取到只读字段的值呢,方法其实很简单在视图定义字段的时候,增加属性force_save='1',字面意思就可以看出来,这个属性是强制保存的意思,这样,只读字段就可以保存了示例如下:<field name="字段名" force_save="1"/>...原创 2021-09-24 17:27:35 · 1250 阅读 · 0 评论 -
odoo通用导出列表视图数据为excel表
介绍一下oca开源模块通用导出web_export_view模块,可以将列表视图上的字段信息,导出为一个excel表,模块文件上传至博客文件下载中,可自行免费下载,或者去odoo应用商店下载1.安装oca的web_export_view模块2.使用演示:如图所示,安装这个模块以后,选中列表记录前面的勾选框,动作旁边会出现一个excel文件的图标,点击图标就可以下载excel文件如果觉得通用导出不符合自己的需求,后面会介绍通过python的方式自定义导出excel文件的方式...原创 2021-09-16 19:48:07 · 618 阅读 · 0 评论 -
odoo列表视图使用oca第三方模块给单元格定义不同颜色
odoo的oca组织开发了很多开源的模块,有很多有趣实用的功能,今天介绍一下web_tree_dynamic_colored_field利用这个模块,可以让单元格根据字段的值不同,显示不同的颜色,对用颜色区分状态很实用,虽然odoo自带了这个功能,但是oca开发的这个模块,更灵活,颜色支持也更多,下面展示一下使用方式1. 安装oca的字段颜色模块,没有下载这个模块的朋友我把模块文件上传在我的博客里,大家自己去下载一下2. 定义需要使用单元格颜色的模型列表视图<odoo>原创 2021-09-16 17:07:05 · 867 阅读 · 0 评论 -
odoo模型基础mail.thread在form页面底部记录字段值变化日志
odoo的mail.thread模块实现了字段变化日志的保存功能,只需要很简单的操作就可以实现自定义模型的字段变化日志 One2many和Many2many字段不生效 具体原因可以查看odoo源码中odoo/addons/mail/models/mail_tracking_value.py 中39行create_tracking_values函数中的处理,是没有对x2many字段做处理的,猜想是因为这两个字段的特殊性,信息不是存在当前模型的数据库表中的进入正题,只需要很简单的步骤继承mail.thr原创 2021-09-16 16:41:00 · 822 阅读 · 0 评论 -
odoo向导
odoo中有很多地方使用到了向导,实际上是通过一个瞬态模型作为中间模型处理数据,来达到某些模型上不好直接处理的数据向导的流程:定义瞬态模型的模型和视图 -> 定义一个动作以及动作对应的方法打开瞬态模型的form视图 -> 定义瞬态模型form视图底部按钮 -> 瞬态模型中处理数据示例步骤如下: 注意:新定义的模型需要在权限文件ir.model.access.csv中注册,新定义的视图如果是单独文件,需要在__manifest__.py中引入1. 创建瞬态模型from原创 2021-09-15 15:45:11 · 933 阅读 · 0 评论 -
视图中按钮使用对话框,点确认执行后续操作,点取消不执行后续操作
odoo视图中的按钮,可以通过很简单的方式使用对话框,只需要定义一个comfirm属性就可以调用odoo的对话框,猜想这个对话框应该是基于jquery的,没有验证过示例如下:<button name="cancel_overhaul_material_apply" type="object" string="XXXX" class="btn" confirm="弹窗标题"/>可以在tree视图也可以在form视图中使用效果如下:...原创 2021-09-14 15:59:31 · 290 阅读 · 0 评论 -
odoo列表字段颜色,行颜色,many2many_tags颜色,看板颜色
odoo自带了一套简单的设置颜色的方式,可以设置列表中某个字段的颜色,某些行的颜色,一级2many字段的many2many_tags的颜色,还有看板的颜色,下面列举一下各个地方颜色设置的方式列表行的颜色设置只需要在tree标签上添加颜色属性,比如decoration-success=“id != False”,当表达式值为真就会颜色就会生效,当表达式的值为假不生效decoration-xxx(表示颜色的词),下面列举出可选值及颜色<tree decoration-success="表达式原创 2021-09-09 16:16:35 · 2944 阅读 · 5 评论 -
odoo动态domain-根据一个字段变化动态改变其他关系字段的domain
odoo的后端可以利用onchange这个api监控页面上字段的变化。利用这个api还可以动态的改变其他字段的domain筛选条件,这个在有些场景下是非常有用的。下面给出示例:@api.onchange('字段A') def 函数名(self): ''' 根据字段A返回字段B的domain ''' # ...其他逻辑代码 return { 'domain': {'关系型字段B': [(筛选条件)原创 2021-09-09 09:43:54 · 1220 阅读 · 0 评论 -
odoo列表视图左上角建立和导入旁边新增按钮,调用后端方法
odoo的列表视图左上角新增按钮调用后端方法时,可以通过ir.actions.server来新增自己想要的按钮调用后端的方法示例如下:<record id="自定义id" model="ir.actions.server"> <field name="name">按钮显示名称</field> <field name="model_id" ref="模型id(model_XXXX)"/>原创 2021-08-10 14:22:48 · 469 阅读 · 0 评论 -
odoo利用postsql表的继承性实现父模型与子模型记录同步
如果遇到有些场景中,多个模型有很多相同字段或者相同功能,可以通过postsql的表继承特性,将多个模型抽象出一个父模型,将相同功能和相同字段放到父模型当中,独特的有差异的字段或者属性放到子模型中,这样子表的记录和父表的记录可以保持一致,增删改查保持同步**实现方式可以参照ir.actions.actions模型及其子模型的实现方式,在odoo框架自带模块中的odoo/odoo/addons/base模块中**具体实现方式如下:需要定义一个sql文件,先创建出子父级表的表名和继承关系,我这里放在模块原创 2021-08-04 18:02:20 · 234 阅读 · 0 评论 -
odoo弹出选择弹窗,在列表视图选择记录操作
odoo可以通过弹窗弹窗列表视图,选择指定模型的记录进行操作常见的场景比如many2many或者one2many字段,需要一次选择多条记录的时候,可以通过自定义的按钮,在js中弹出弹窗,显示列表中的记录进行操作弹窗示例如下:var dialogs = require('web.view_dialogs');new dialogs.SelectCreateDialog(self, { res_model: '弹窗对应的模型原创 2021-07-15 13:41:24 · 1224 阅读 · 0 评论 -
odoo后端动态修改视图中元素的属性
如果需要odoo后端对视图属性做动态修改,即加载视图时,根据后端逻辑修改视图中元素的属性,可以通过fields_view_get实现。原理应该是odoo加载视图之前会先加载这个函数获取修改结果。如果没有任何修改,就会按照xml中定义的视图进行渲染只需要在对应模型中定义fields_view_get函数即可实现示例如下: def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):原创 2021-07-09 11:14:54 · 965 阅读 · 0 评论 -
odoo中消息机制longpolling的使用
1.odoo中消息机制有几种,比如(1).用于前端的消息机制core.bus.trigger/core.bus.on(2).用于前后端消息通信的longpolling消息机制2.前端消息通信的使用之前文章已经记录过,说一下前后端消息机制longpolling的使用(1).前端部分:this.call('bus_service', 'addChannel', 'menu_badge');this.call('bus_service', 'onNotification', self, this._o原创 2021-04-26 11:32:32 · 1488 阅读 · 0 评论 -
pycharm运行python项目报错unknown locale: UTF-8
最近用pycharm运行python项目的时候,报错提示unknown locale: UTF-8,网上看了很多解决办法都说在本地文件里面加编码配置项.但是解决不了猜测原因可能是pycharm没有读取到本地电脑环境的编码配置.使用下下策启动项目:在pycharm命令行启动缺点:没办法用编译器的调试,断点等工具...原创 2021-01-13 09:33:28 · 1418 阅读 · 0 评论 -
odoo项目中models里面新建的文件夹在__ini__.py中导入报错问题
今天新建模块的时候,右键new -> Directory创建的模块,但是在升级的时候报错cannot import name ‘XXXXX’ from ‘XXXXXXX.models’’![]原因分析:之前提交代码的时候删掉了__pycache__文件,导致pycharm的某些配置项丢失.无法识别新建的Directory文件中的__init__.py文件解决方式:重新建文件夹,右键new -> Python Package.将之前的文件拷贝过来就行了这样创建的文件自带__init__原创 2020-09-23 15:42:07 · 391 阅读 · 0 评论 -
python安装包提示gcc错误
python安装模块的时候提示gcc错误:error: command ‘gcc’ failed with exit status 1遇到这个问题应该是本地的python环境和模块不兼容或者本地环境缺失一些模块需要的依赖。看了网上的解决办法,现在整理一下,然后说一个最low的解决办法方法一:sudo yum install gcc sudo yum install gcc-c++ 适用linux或者centos用户方法二:yum -y install python-devel或者:s原创 2020-08-28 10:58:47 · 2786 阅读 · 0 评论