文章目录
前言
个人理解,odoo就是一个控制器prc通过模型(py+js)读取数据库内容用以视图(xml)展示的工具。其底层数据调用通过ORM框架。对于我们菜鸟来说,只需要学习odoo官方教程。掌握好基本的xml和py的修改和编写即可满足90%以上的需要。
为了高效进行二次开发调试,需要搭建开发和调试平台。同时,基于二次开发特点,需要掌握一些初步的断点及调试技巧。本人作为odoo菜鸟,将相关学习和问题解决过程整理为本套教程,力求浅显易懂帮助有兴趣的朋友共同进步。
一、搭建开发环境
1.安装源码搭建环境
由于我此前python一直用的vscode作为平台,因此习惯还是用vscode来开发。具体开发环境搭建参考老赵的文章:
win10下搭建odoo18开发环境。
到这里免费下载odoo官方开发手册中文教程
odoo专家老赵的博客,也可以去B站看他的视频教程。
部分简单的基础知识,请自行查阅手册,本专栏不再赘述。
2.基本参数设置
一般而言,源码目录最好放置在D盘,如果此前已经一键安装过ODOO,可以免去安装postgres数据库的步骤,直接可以修改源码的odoo.conf调用:
[options]
addons_path = addons,myaddons //加,myaddons,定制化开发的addons放这个目录便于查找
db_host = 127.0.0.1
db_port = 5432
db_name = odoo18 //名称需与此前一键安装的不同
db_filter = odoo18
db_user = odoo
db_password = odoo18
load_language = zh_CN
log_level = info
admin_passwd =123
http_port = 80 //原端口8069,这里改为80,方面本地访问
session_timeout = 7200 //7200秒后对话过期
3.添加AI工具
VSCODE除了按网上教程安装必要的扩展外,还可以安装如下几个AI工具,加快开发速度:
推荐灵码的对比功能。同时要注意保持对AI编程的质疑精神,有时候AI会将简单的问题复杂化。
二、odoo的二次开发调试技巧(持续更新)
1.刷新机制
为了加快访问速度,浏览器会有大量缓存文件,因此每次刷新页面最好用ctrl+F5。
此外,注意当模型(py文件)修改后,必须重启并升级模型才能生效。视图文件(xml)修改后,加入"–dev=xml"可以不需要升级。虽然启动文件加入"-u", “某模型名称”,可以重启odoo服务并自动升级模型,但实测少数某些情况(如模型有bug)不会完成自动升级,仍需网页手动升级。
2.浏览器查看
由于xml是静态页面,因此需要使用浏览器的开发者工具来查看其内部数据。
通过F12,调出开发者工具,点击”网络“由于一般使用call_kw控制器调用模型,因此筛选输入call_kw。以search方法为例,点search read,可以查看其读取到后台的对象数组。
3.浏览器断点
点击源代码,可以在web.assets_web.min.js内找到需要断点的位置。
4.页面排版错版
(20250421更新)
为了安全将附件与源码分开放置,修改odoo.conf, 增加data_dir = D:\odoo_data_dir
刷新页面后发现整改版式出现错乱。
研究半天,想到是不是session问题,于是将原sessions文件夹下3个文件夹copy到data dir,问题解决。
(20250422更新)
由于恢复数据库名称发生变化,若修改odoo.conf绑定新数据库名称,则需立即将filestore里面的文件夹名称改为和新数据库名称对应,否则同样出现页面错版问题
5.新增字段不能正确添加到数据库
通过继承方式在模型(.py)文件中可以为数据库增加字段,如下示意
class ResPartner(models.Model):
_inherit = 'res.partner'
_description = 'Partner Extension' # 添加描述
# 新增字段
e_name = fields.Char(string='英文名')
但按此前教程升级自定义模块后,出现字段不存在错误提示。查看数据库,发现确实没有增加字段。
由于自定义模块第一次安装时相关新增字段是自动添加的,本次增补字段怀疑是需要重新安装。
因此将启动模块的u命令改为i,强制重新安装,问题解决。
6.手动删除不存在的文件记录
偶尔由于操作失误,造成出现终端运行一直出现
FileNotFoundError: [Errno 2] No such file or directory: ‘d:\odoo_data_dir\filestore\odooD\ac/ac2a935c445b4a44ecb11e8b692d41661f9ecae1’
的错误提示,虽然不影响使用,但有时候会掩盖重要信息,因此有必要从数据库手动删掉。
pgadmin进入管理页面
query tool输入命令:
SELECT id, name, res_model, res_id, create_date
FROM ir_attachment
WHERE store_fname = '74/744fc247b813c44f4cf02357706e88b283cb0f97';
找到出问题的行,在attachment表删除即可
7.快速开启调试模式(20250426)
在浏览器地址栏的地址后面加?debug=1,可快速开启调试模式。
总结
本期主要介绍开发需搭建 VSCode 环境,配置 odoo.conf 参数,安装 AI 工具辅助编码。调试技巧包括模型升级机制、浏览器开发者工具分析 call_kw 请求等技巧,并将持续进行更新。