odoo开发中碰到的奇奇怪怪的问题(持续更新)
1. Date类型字段给了默认值为当天但是创建的时候与实际时间相隔一天并不是时区的问题如下这张图片为2月10日创建默认值却是2月9日。解决方法将date 、datetime类型字段默认值分别写如下样式defaultlambda self: fields.Date.today() defaultlambda self: fields.Datetime.now()2.many2many字段保存后会自动排序导致后续生成的明细无法按照自己的意图来如下具体码数字段原来关联了8,9,10编辑然后添加1,2,3保存后该字段会自动排序又变成1,2,3,8,9,10此处应该是自动按照id来重排了给该字段的关联模型添加_order属性使之无序也尝试过了没用很多时候我们不需要这样的自动排序如我本想按照8,9,10,1,2,3的顺序遍历这个字段但是它自动排序后遍历的顺序就变了。解决方法新增加一个表里面有两个字段一个整数型记录顺序一个多对一关联具体码数。然后使销售这个表多对多这个新表就能将我们具体码数的选择顺序记录在这个新表中因为调用write方法时具体码数中的值还是按照我们选择的顺序来排的它在保存之后才会自动按id来排所以我们在write之前可以将这个顺序数据写进新表里之后遍历新表就可以了。3.kanban视图的继承上方红色框内必须为extension,否则无效元素标签的隐藏用上面两个方法均可4.跳转至向导后修改明细字段当一条明细某个字段值为空时该明细会直接删除原因工序字段设置了required1,这种字段编辑后未填向导模型并不会提示必填没填而是会直接删除掉此数据。解决方法删除掉此字段的required1后即可解决问题。5.将一个服务器的数据库复制到另外一个服务器上登录后出现白屏如下原因odoo数据库里面的一些静态数据或者附件会存在一个以该数据库命名的文件夹中当你移动、复制这个库到另外一个服务器上之后如果你把这个数据库的名称改掉它就会找不到这些静态文件查看日志会有以下错误提示解决方法复制的数据库名称保持和原来一样即可解决其他白屏问题现象备份出来的数据库在恢复到其他数据库上后登录odoo显示空白页非网络问题。刷新重启等方式都无法解决经查找资料发现是由于静态css文件是存储在数据库之外的数据库备份时静态文件和css文件不会一起备份所以当还原数据库后页面出现空白是由于静态文件路径是指定的但是本地又没有找不到导致的。解决方法DELETE FROM ir_attachment WHERE url LIKE /web/content/%;执行完毕后重启数据库服务以及odoo服务。重启服务升级base模块然后还可能存在模块图标消失的问题升级web模块6.当我们给一些系统基础表如res_partner,res_user,base这些表添加字段会出现无法重启的情况页面Internal Server Error 500后台提示res_partner没有某某字段(还没升级当然没有你倒是给我个升级的机会啊在pycharm的启动器里添加-u 模块名也没法解决)。解决方法a.新创建一个模块将继承写到这个单独的模块里面然后安装即可。此方法缺点下次再需要在这个表添加新字段还得新建模块。b.直接去数据库找到这个表给该表直接插入字段简单粗暴sql语句ALTER TABLE table-name ADD COLUMN cloumn-name varchar;table-name为表名cloumn-name为字段名, varchar为字段类型(根据实际需求来)插入完成后再重启服务就不会报错了。c.在模型里添加以下代码升级完记得注释掉否则很影响速度def __init__(self, pool, cr): init_res super().__init__(pool, cr) cr.execute(SELECT column_name FROM information_schema.columns WHERE table_name res_users -- 假设表在 public schema 中 ) reslist(map(lambda item:item[0],cr.fetchall())) if default_scan_workcenter_id not in res: cr.execute(ALTER TABLE res_users ADD COLUMN default_scan_workcenter_id varchar;) if default_scan_print_id not in res: cr.execute(ALTER TABLE res_users ADD COLUMN default_scan_print_id varchar;) if default_scan_gen_qty not in res: cr.execute(ALTER TABLE res_users ADD COLUMN default_scan_gen_qty numeric;) return init_res重启就不会报错了就可以正常升级d.重启完项目不要刷新页面切记直接去升级模块就行这个是最方便的方法前提是你重启后还没刷新页面。7.tree视图字段添加装饰器atrrs{invisible:[(state, in, (done, cancel))]}时字段会隐藏值而不是隐藏整个字段如果添加invisible1则是隐藏字段如下8.不可空继承。我在模块升级报错提示如下提示为某个xml文件上的视图出错一开始以为是那个xml文件里多了个字符或者少了个字符啥的然后仔细检查了那个xml文件好几遍也没有发现然后进断点发现不是这个xml的问题而是另外一个继承于此xml视图的问题。原因不可空继承。继承视图后一定得写一些东西而不是只继承不写如下。9.docker-compose启动报错windows上用docker-compose拉容器报错提示如下解决方法10.数据库迁移问题解决方案问题5的扩展当出现白屏或者以下错误时原因某某css加载失败因为数据库迁移以后ir_attachment表中存储的静态文件路径仍然是原路径新环境中查找不到然后就会报错解决方法删除ir_attachment表中的url字段以/web/content开头的所有数据delete from ir_attachment where url ilike /web/content/%;然后升级base模块问题解决还可以再地址上加上 debugassets然后就能进去了但是一关掉这个模式还是会白屏还是得执行上面的把静态文件删除。12.odoo域search里面的domain,sale_ids是many2many字段sale是单个单据此时使用in也是可以的可以匹配到sale_ids包含sale的。13.点按钮弹出来的targetnew页面无法中的tree无法按照模型的_order属性或者tree视图上的default_order属性排序需要手动排序后返回14.计算方法和onchange方法里面尽量不上调用unlink()调用后之前给表单赋值的操作会失效尽可能其他等效果的方式来实现删除功能unlink()应当在赋值之前进行如果先赋值后执行unlink,则赋值会失效如self.qty 10self.partner_id.unlink()则删除执行完成之后self.qty并不等于10而是变成015.模型one2many自己_parent_name location_id给类添加此属性类就可以one2many自己具体可参考源生stock.location模型16.browse方法即使数据id不存在也不会报错或者提示比如 product_id self.env[product.product].browse(111111)即使这个id 111111不存在这行代码也不会有问题而且还能用他来个其他字段赋值如self.product_id product_id.id当然赋值完成后会报错因为压根不存在这个id的产品所以这个方法的使用最好搭配上exists方法如下if not order_id.exists():raise UserError(产品不存在!)17.docker容器down掉重新up后odoo服务一直报错KeyError: ir.httpdown掉服务后重新up可能会报这个错误这时需要将docker-compose里面的数据卷和服务名称改一下由odoonetwork80 改成odoonetwork81可能原因服务重启拉起以后由于原来的networks已被占用所以这里重新建一个就不会报错了18.compute字段没加storeTrue也无法进页面自动计算。开始找了各种原因最后发现是因为字段设置了company_dependentTrue导致无法运算将company_dependent改成False即可19.odoo新添加的css样式升级以后没有加载成功刷新重启都没有效果。解决方法 ctrlF5 加载后台资源刷新不同于直接F5刷新20.self.env.ref(#视图id) 这种方式读取视图数据会用到 ir.ui.view这个模型的read权限当用户没有这个权限但进行的操作里面有涉及到读视图的这个方法就会引发权限错误报错如下解决方法a.给予该用户此权限b.方法开始之前先加上以下代码意思是超级用户执行逻辑self self.with_user(self.env.user).sudo()21.给二进制文件添加显示名称普通二进制字段添加上传文件后保存后会显示为 ‘xxx kb千字节’ 字样想要显示文件名称需要如下操作一定要记得加force_save122.向导模型onchange方法使用问题。问题场景点击按钮弹出向导模型有明细需要写的逻辑是在表头填写一个数字按序将所填数值填充到明细上的数量字段上大概样式如下开始写的逻辑是点按钮创建多条向导明细数据然后return跳转到该向导窗口new然后填写表头的数字自动填充下面明细结果发现明细填充不了页面上数值没变或者后台读取的数据没变force_save1也加了还是无济于事。解决方法点按钮不直接创建多条向导明细数据而是用默认值形式如下然后问题得到解决数据可以填充23.导入模板表单数据导入的时候默认是没有模板的如果想要自己提供模板在该模型下添加以下方法24.数字类型的字段Float,Integer,Monetary如果不加default0.0的话页面上会显示为0但数据库中默认为空并不是0。当我们筛选某个字段为0时会筛选不到这些单据需要筛选某个字段为未设置所以一般情况下这些类型的字段最好添加default0。25.需求动态创建tree视图字段点击菜单出现选择日期范围的弹窗选择日期后先删除之前的自定义字段然后根据日期范围按每天生成以x_开头的自定义字段按序添加到视图中去。错误按需求完成后会报错例如AttributeError: Char object has no attribute depends样式。引发问题的原因进过断点排查最后发现是字段缓存造成的问题随意创建和删除自定义字段会影响缓存的正确读取导致报错甚至系统崩溃。解决建议将临时创建自定义字段改成类中定义固定数量的字段加载视图之前更改这些字段element的string属性以达到相同效果或者做定时任务删除自定义字段而不是进页面时删除字段猜测没实践过。26.跳转向导弹窗时会触发明细如果明细是多对多字段且关联的不是向导模型上的计算字段的计算方法无论该计算方法是否添加storeTrue。27.销售单确认报错如下错误原因客户选择了本公司导致产品补货路线出错。解决方法可以在销售单确认前判断客户是否为本公司。28.onchange方法的赋值会触发计算方法但是计算方法的赋值不会触发onchange。29.附件权限问题报错如下这种一般都是附件上传时模型标识res_id和资源模型res_model没有正确的传值导致无法确认附件所属表单读的时候引发权限问题。解决方法去附件中将res_id和res_model值不全的附件删除后重新上传。30.报错如下原因猜测某些字段修改了字段类型导致数据库中的约束出现问题解决方法升级对应修改了字段类型的模块或者升级base.31.Monetory类型字段在列表视图上加sum合计必须保证币种字段也在视图中隐藏也行才会触发合计效果没加会是下图情况。另外如果列表视图多条数据币种不一致合计也不会显示。32.depends装饰器中的参数也需要避免递归否则将会导致模块升级异常例如像api.depends(product_Id.move_ids.product_id) 这种写法。33.one2many字段过滤需求场景查看生产单时只想查看部分工单问题如果在视图上过滤是没有作用的one2many字段在视图上加domain没有效果也考虑过加个many2many字段来关联这一部分想要查看工单但是many2many字段在视图上无法限制create和delete所以也是不行的。处理方法重新定义一个one2many字段如下route_workorder_ids fields.One2many(mrp.workorder, production_id, string工序关联工单, domain[(whether_report, , True)])domain的定义必须加在这里。到时候查看就用这个字段而不是workorder_ids即可34.给模型添加_sql_constraints限制时会弹出技术性错误如下这对用户肯定是不友好的。解决方法将_sql_constraints定义到字段之后而不是在字段定义之前定义移动位置即可如下补充上面问题如果还没解决就再升级一下模块不知道是不是odoo的bug有时候行有时候不行不行的时候就升级一下模块以上基于odoo1735.恢复数据库恢复常见错误。a.转一会儿圈然后直接没反应了也没有恢复好b.弹出以下提示常见排查原因修改http.py文件中如下配置参数排查nginx配置文件中的文件大小限制参数 client_max_body_size36.odoo模块升级报错KeyError: web.customize.report.import.wizard这个表原来有后来删掉了解决方法数据库执行一下sqlDELETE FROM ir_model_data WHERE module模块名称 AND nameweb.customize.report.import.wizard; DELETE FROM ir_model WHERE modelweb.customize.report.import.wizard;37.odoo模块升级报错如下报错原因many2many字段定义表名时定义了重复的表名可能之前定义过后来删了但是仍然会有记录解决方法给新的many2many字段换一个中间表表名38.bom不要批量创建速度极慢还会引发递归上限错误尽量遍历创建。39.image类型字段图片上传后会被压缩这和图片内存大小无关和图片的分辨率有关odoo17默认会将分辨率超过1920的图片压缩至1920例如3840x1000会被等比压缩至1920x5001000x3840则会被压缩至500x1920。要想不压缩图片分辨率在系统参数菜单下添加如下配置还有一点需要注意image类型字段命名尽可能不要命名为image_1920、image_128这样。

相关新闻

互联网大厂Java面试剧情:内容社区场景下Spring Boot/微服务/AI技术全解

互联网大厂Java面试剧情:内容社区场景下Spring Boot/微服务/AI技术全解

互联网大厂Java面试剧情:内容社区场景下Spring Boot/微服务/AI技术全解 场景设定 谢飞机是一名准备应聘互联网大厂的Java程序员,面试官严肃专业。面试以内容社区与UGC场景切入,逐步考察Spring Boot、微服务、数据库、消息队列、AI智能客服等…

2026/7/4 20:17:30 阅读更多 →
while循环和for循环

while循环和for循环

一、while循环 1、while 循环&#xff0c;只要条件为真&#xff0c;我们就可以执行一组语句。 2、while 循环需要预先设置索引变量,并且需要编写代码执行索引变量1。如下&#xff1a;我们需要定义一个变量 i&#xff0c;初始值设置为 1。 i 1 while i < 7:print(i)i 13、w…

2026/7/5 1:43:56 阅读更多 →
Web3.0 AI融合趋势:用DeepSeek实现去中心化应用开发与优化实战

Web3.0 AI融合趋势:用DeepSeek实现去中心化应用开发与优化实战

Web3.0 AI融合趋势&#xff1a;用DeepSeek实现去中心化应用开发与优化实战摘要&#xff1a; Web3.0 的核心愿景是构建一个用户拥有数据主权、价值自由流通的去中心化互联网。人工智能 (AI) 则代表了强大的数据处理、模式识别和自动化能力。两者的融合&#xff0c;即 Web3.0 AI…

2026/5/17 8:52:40 阅读更多 →

最新新闻

2026年实验室建设公司深度测评:全链综合方案时代,谁是最优选?

2026年实验室建设公司深度测评:全链综合方案时代,谁是最优选?

编者按 作为一名从业逾十年的实验室建设领域观察员&#xff0c;我始终坚持通过资质对比、技术能力分析与项目案例研究&#xff0c;为行业同仁甄选值得信赖的工程服务伙伴。近五年来&#xff0c;实验室建设已从“单一装修施工”向“复杂系统集成”转型。随着生物安全法规趋严、智…

2026/7/7 3:06:28 阅读更多 →
知识的符合程度或者匹配程度度量方法

知识的符合程度或者匹配程度度量方法

针对“知识的符合程度或匹配程度”&#xff0c;学术界有多个专门的术语&#xff0c;具体取决于“知识”是指预设的规则/流程模型&#xff0c;还是指检索到的信息内容。结合企业工作流和资源服务背景&#xff0c;以下是三个最核心、最常用的学术术语&#xff1a;1. 符合度&#…

2026/7/7 3:06:28 阅读更多 →
完整数字通信链路仿真(哈夫曼 +(7,4) 汉明码 + BSC 信道)【P124302151陈明】

完整数字通信链路仿真(哈夫曼 +(7,4) 汉明码 + BSC 信道)【P124302151陈明】

一、摘要 本文搭建一套端到端简易数字通信系统&#xff0c;完整流程&#xff1a;随机信源序列→哈夫曼无损压缩&#xff08;信源编码&#xff09;→(7,4) 汉明码信道纠错编码→BSC 二进制对称信道加噪声传输→汉明译码纠错→哈夫曼译码恢复原始信源。通过改变 BSC 信道交叉概率…

2026/7/7 3:04:27 阅读更多 →
别再等别人盖章了:成年人最顶级的自由,是自己给自己打分

别再等别人盖章了:成年人最顶级的自由,是自己给自己打分

高铁穿过一段长长的隧道&#xff0c;车厢里暗了下来。车窗变成了一面模糊的镜子。我盯着镜子里那张略显疲惫的脸看了两秒&#xff0c;然后按熄了手机屏幕。就在刚刚&#xff0c;我还在反复刷新微信&#xff0c;等着下午刚汇报完的客户大老板给个反馈。十分钟没回&#xff0c;我…

2026/7/7 3:04:27 阅读更多 →
珍惜作为“牛马”的最后光阴?优必选,抛出了一个公关“核弹”

珍惜作为“牛马”的最后光阴?优必选,抛出了一个公关“核弹”

作者&#xff1a;Evin编辑&#xff1a;刘致呈审核&#xff1a;徐徐出品&#xff1a;互联网江湖这两年&#xff0c;机器人行业发展的非常快。从上春晚秀“舞技”&#xff0c;到跑马拉松破人类记录&#xff0c;再到进入电力、矿山等高危场景完成巡检等任务&#xff0c;机器人的价…

2026/7/7 3:02:26 阅读更多 →
AI视频生成技术在游戏特效制作中的应用实践

AI视频生成技术在游戏特效制作中的应用实践

&#x1f680; 30款热门AI模型一站整合&#xff0c;DeepSeek/GLM/Qwen 随心用&#xff0c;限时 5 折。 &#x1f449; 点击领海量免费额度 这次我们来看一个基于AI视频生成技术的"恐惧魔王 吞噬魔法"特效测试项目。这个项目展示了如何利用AI技术实现游戏角色特效的…

2026/7/7 2:40:13 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集&#xff0c;从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高&#xff1a;流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广&#xff0c;是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队&#xff0c;往往容易卡在一容易踩坑的选型难题&#xff1a; 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定&#xff0c;必须同时依赖「文本语义理解 实体关系推理」时&#xff0c;到底是做「向量图谱混合检索」就够了&#xff0c;还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools&#xff1a;5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里&#xff0c;参与了关于混合后量子密码学的讨论&#xff0c;应付端点攻击找茬的人&#xff0c;还参与留言板讨论后&#xff0c;发现“威胁模型”对多数人仍是陌生概念&#xff0c;且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”&#xff1a;我理解的渗透测试到底是什么&#xff1f;每次看到新闻里说某个大公司的数据被“黑”了&#xff0c;或者某个网站被攻击导致服务瘫痪&#xff0c;你是不是和我一样&#xff0c;心里会冒出两个念头&#xff1a;一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻