Odoo 开发备忘 【持续更新】

Odoo 开发常见问题备忘

持续更新,欢迎补充!

一、用法实践(Usage)

  • 外部图片url,可通过一个 Html 计算字段在 Form 视图展示
  • 【注意】继承模型__init__中的声明顺序

二、系统设置(Setting)

  • S001: 扩展 res.config.settings ,添加字段属性 config_parameter,可在 Odoo 设置中修改系统参数。
class ResConfigSettings(models.TransientModel):
    _inherit = 'res.config.settings'
	appid = fields.Char('AppId', config_parameter='my_module.appid', default='')
	secret = fields.Char('小程序 Secret', config_parameter='my_module.secret', default='')

注意 res.config.settings 是瞬态模型,无法持久化存储到数据库,可以通过 related 字段 保存到其他模型的记录中

三、安装

3.1从源码安装 odoo17

环境:阿里云服务器 centos 2核8G

mkdir /root/odoo
cd /root/odoo
git clone -b 17.0 --depth=1 https://gitee.com/mirrors/odoo.git odoo17
mkdir config
mkdir addons
yum install python311
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
# 运行
python3 ./odoo17/odoo-bin -c /root/odoo/config/odoo.conf &
# 停止
kill -9 $(ps -ef|grep odoo|grep -v grep|awk '{print $2}')

数据库:

yum install postgresql
systemctl enable postgresql
systemctl start postgresql
systemctl status postgresql
postgresql-setup initdb #初始化
sudo -u postgres psql # 修改密码
# 密码登录、外网访问
vi /var/lib/pgsql/data/pg_hba.conf #local all all md5   # host all all 0.0.0.0/0 md5
vi /var/lib/pgsql/data/postgresql.conf # listen_addresses = '*'

配置:odoo/config/odoo.conf 配置示例:

[options]
; without_demo =
addons_path = /root/odoo/odoo17/odoo/addons,/root/odoo/odoo17/addons,/root/odoo/addons
data_dir = /var/lib/odoo
admin_passwd = odoo
;longpolling_port = 8072
;proxy_mode = True ;使用 nginx 开启
; log_level = info
;logfile = /root/odoo/server.log ;输出日志到文件
db_name = jobs
db_user = odoo
db_password = 1122RHvVfDEqOQBpaben
db_port = 5432 
db_sslmode = disable
;workers = 3
;max-cron-threads = 1
limit_memory_soft = 1629145600
limit_memory_hard = 1677721600
limit_time_cpu = 600
limit_time_real = 1200
limit_request = 8192

3.2 问题:安装 python-ldap 报错

fatal error: Python.h: No such file or directory

yum groupinstall "Development tools"
yum install openldap-devel python-devel 

还报错,解决方案
需要与安装的python一致 => yum install python3.11-devel

四、不符预期

  • Odoo16 html 字段如何正确赋值,r.html_field1 = '<strong>something</strong>' + r.html_field2 前端没有加粗展示。解决方案全部采用f-string方式: r.html_field1 = f'<strong>something</strong>{r.html_field2}'
  • Odoo17 自定义权限组,放到人力资源分类下不展示,开启开发者模式可显示。
    在这里插入图片描述
    当前解决方案:
    根据 __manifest__.py 中设置 'name': '招聘小程序', 'category': 'Human Resources/Jobs'
	<!--下面组继承上面组-->
	<record id="base.module_category_human_resources_jobs" model="ir.module.category">
        <field name="name">招聘小程序</field>
        <field name="description">招聘小程序用户组</field>
        <field name="sequence">1</field>
    </record>
    <record id="group_job_user" model="res.groups">
        <field name="name">普通会员</field>
        <field name="category_id" ref="base.module_category_human_resources_jobs"/>
        <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
    </record>
    <record id="group_job_salesman" model="res.groups">
        <field name="name">分销员</field>
        <field name="category_id" ref="base.module_category_human_resources_jobs"/>
        <field name="implied_ids" eval="[(4, ref('group_job_user'))]"/>
    </record>
    <record id="group_job_admin" model="res.groups">
        <field name="name">招聘主管</field>
        <field name="category_id" ref="base.module_category_human_resources_jobs"/>
        <field name="implied_ids" eval="[(4, ref('group_job_salesman'))]"/>
    </record>

互相继承的几个原型

五、异常报错(Error)

  • 【无法启动】扩展 res.partner 模型,添加字段后无法启动

    1. 本地开发可在启动时通过参数 -u [模块名] 进行强制升级
    2. 不方便使用参数时,可1.先注释掉扩展的字段,2.重启后进入应用升级列表页面,3. 再去掉代码注释,4. 重启找到对应模块手动升级。
  • 【无法启动】 AttributeError: ‘Integer’ object has no attribute ‘split’

    竟然是 @api.depends() 中字段没加引号导致

  • 【报错】TypeError(“‘int’ object is not subscriptable”)

    1. domain 格式错误没有加()
  • 【权限】字段无法编辑,关联字段模型未设置权限

  • 【不常见】调用Odoo Api 接口报 404错误
    创建了多个数据库,未明确指定使用哪个

  • 【样式问题】 Error: Invalid CSS after “$*”: expected 1 selector or at-rule, was
    scss 中变量结尾没有加分号’;’

  • 【异常】AttributeError: module ‘lib’ has no attribute ‘OpenSSL_add_all_algorithms’ 或报错 has no attribute ‘X509_V_FLAG_NOTIFY_POLICY’
    cryptography 和 pyopenssl 两个模块不兼容导致,因此降低cryptography 的版本可解决

    pip install cryptography==38.0.4
    
  • 【报错】‘RequestHandler’ object has no attribute ‘headers’
    在这里插入图片描述

大坑

  • 没权限菜单不显示:记得添加 security/ir.model.access.csv
  • Odoo17 开发建议使用 Python 3.11, 12安装包报错
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AaronZZH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值