我正在使用 PostgreSQL 数据库 (V 10) 和 odoo ERP (V 12)。
当我尝试同时使用 2 个不同的用户更新表时,我得到
ERROR: could not serialize access due to concurrent update
即使我使用多个芹菜工作人员进行并行执行,我也会收到此错误。有没有使用 odoo 在 PostgreSQL 中的同一个表中并行更新的解决方案。
谢谢!
环境信息: python3 --version:Python 3.6.5 pip3 --version:pip 21.2.4
当我执行:“pip3 install -rrequirements.txt”时出现错误:suds-jurko 安装命令错误:use_2to3 无效
我正在寻找在我的 odoo 上创建额外的插件。我创建了一个插件,并在我的 docker compose 文件中设置将包含我的插件的文件夹挂载到我的 odoo docker 映像中,定义在 odoo 容器启动时也读取此文件夹。问题是,当我通过浏览器使用 odoo 时,我没有在插件列表中看到额外的插件。
我在 docker compose 中使用 odoo 12 docker 镜像
里面addons/
我有我的额外插件,里面config/
我有我的odoo.conf
docker-compose.yml
version: '2'
services:
web:
image: odoo:12.0
depends_on:
- db
ports:
- "8069:8069"
volumes:
- odoo-web-data:/var/lib/odoo
- ./config:/etc/odoo
- ./addons:/mnt/extra-addons
db:
image: postgres:10
environment:
- POSTGRES_DB=postgres
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- odoo-db-data:/var/lib/postgresql/data/pgdata
volumes:
odoo-web-data:
odoo-db-data:
Run Code Online (Sandbox Code Playgroud)
odoo.conf
[options]
addons_path = /mnt/extra-addons
data_dir = /var/lib/odoo
Run Code Online (Sandbox Code Playgroud)
如果我显示我看到的内容addons
:
$ ls addons/
custom-addon …
Run Code Online (Sandbox Code Playgroud) 我一生都找不到任何地方解释常见 Odoo 方法名称的后缀execute_kw
。后缀是做什么kw
用的?它只是两个任意字母吗?
在一个先例问题中,我正在寻找与 ORM 中BaseModel.new
的create
方法类似的方法,但不会在数据库中写入更改。
是否存在相同的方法,但行为像unlink
?我想在onchange
通话中从我的记录集中删除一条记录。我不希望立即删除记录,但仅当用户按下Save
按钮时才删除。
非常感谢您提前!
有关我为什么需要此功能的更多信息:
我正在使用stock
Odoo的模块。在 a 中Picking
,我想动态更改保留产品(按唯一序列号跟踪),这意味着添加一些新产品move_line
并删除一些现有产品。
我不能简单地更改,lot_id
因为某些move_line
slot_id
可能会保留在另一个中Picking
(或者至少,我没有找到如何巧妙地做到这一点)。
通过更改lot_id
或执行selected_move_id.move_line_ids.new({...})
我的onchange
方法,我可以添加新的。现在我想删除我不再需要的现有的。我想以与用户按下trash
相应行上的图标相同的方式删除它们。
我需要扩展基本的 odoo 图像,安装一些 python 包。我有一个与 odoo docker 镜像相关的问题。
我尝试编写自己的 Dockerfile 来继承odoo:latest
并安装我的 pip 包,但它对我不起作用。问题是在构建阶段一切似乎都工作得很好,但我在输出中看不到我的模块pip list
。
这是我的 Dockerfile
FROM odoo:latest
RUN pip3 install remote-pdb
Run Code Online (Sandbox Code Playgroud)
我已经用该命令构建了我的图像
docker build -f Dockerfile-odoo -t odoo-extended .
并有下一个输出
Sending build context to Docker daemon 2.993GB
Step 1/2 : FROM odoo:latest
---> 027465548874
Step 2/2 : RUN pip3 install remote-pdb
---> Running in ce7e075dacf4
Collecting remote-pdb
Downloading https://files.pythonhosted.org/packages/72/4d/976e45067b791c0012ee060ba615a95122ba4152dce2cf5d4f57847eef84/remote_pdb-2.0.0-py2.py3-none-any.whl
Installing collected packages: remote-pdb
Successfully installed remote-pdb-2.0.0
Removing intermediate container ce7e075dacf4
---> 9e315e30ccbb
Successfully built 9e315e30ccbb …
Run Code Online (Sandbox Code Playgroud) 我正在使用 odoo pylint 并遇到此消息“Odoo E8103:SQL 注入风险”。如果可以的话使用参数'。它指的是以下示例 SQL 查询行模式:
self.env.cr.execute("""SELECT sq_qty , prod_id ...
FROM st
LEFT JOIN prod
ON prod.id = st.prod_id
WHERE %s
GROUP BY prod_id, loc_id, ..."""% domain, args)
Run Code Online (Sandbox Code Playgroud)
根据OCA No SQL Injection,最好的安全方法是永远不要使用 Python 字符串连接 (+) 或字符串参数插值 (%) 将变量传递给 SQL 查询字符串。
我尝试将 '%' 替换为 ',' 并用 () 括起域和参数: GROUP BY prod_id, loc_id, ...""", (domain, args)),它通过了检查,但不确定这是否是正确的方法。
放置跳过检查是更好还是按照 pylint 建议的内容进行修改,如果修改更好,处理它的正确方法是什么?
编辑:我将sql查询语句分离为变量
query = """SELECT sq_qty , prod_id ...
FROM st
LEFT JOIN prod
ON prod.id = st.prod_id
WHERE …
Run Code Online (Sandbox Code Playgroud) 我想在“Windows Server 2019”上使用“Python 3.9”和“postgresql 13”安装 Odoo 版本 12,但是当我想创建数据库时,会显示此错误:
Database creation error: relation "ir_model" does not exist LINE 1: SELECT * FROM ir_model WHERE state='manual' ^
Run Code Online (Sandbox Code Playgroud)
我用这个命令来运行 Odoo:
python odoo-bin -r user -w pass -d odoo -i base --db-filter=^%d$
Run Code Online (Sandbox Code Playgroud)
当我检查 pgAdmin Odoo 已创建数据库但其中没有存储表。
当我想打印任何报告时,我收到此消息:wkhtmltopdf失败(错误代码:-8).消息:b"
此问题仅适用于Odoo 12版本,但对于以前的版本,它运行良好..此链接将显示警告消息:Wkhtmltopdf警告
这是日志:
Traceback (most recent call last):
File "/home/nebil/.environments/Odoo12/lib/python3.6/site-packages/werkzeug/serving.py", line 205, in run_wsgi
execute(self.server.app)
File "/home/nebil/.environments/Odoo12/lib/python3.6/site-packages/werkzeug/serving.py", line 193, in execute
application_iter = app(environ, start_response)
File "/home/nebil/Documents/odoo/odoo/service/server.py", line 350, in app
return self.app(e, s)
File "/home/nebil/Documents/odoo/odoo/service/wsgi_server.py", line 128, in application
return application_unproxied(environ, start_response)
File "/home/nebil/Documents/odoo/odoo/service/wsgi_server.py", line 117, in application_unproxied
result = odoo.http.root(environ, start_response)
File "/home/nebil/Documents/odoo/odoo/http.py", line 1317, in __call__
return self.dispatch(environ, start_response)
File "/home/nebil/Documents/odoo/odoo/http.py", line 1290, in __call__
return self.app(environ, start_wrapped)
File "/home/nebil/.environments/Odoo12/lib/python3.6/site-packages/werkzeug/wsgi.py", line 599, in __call__ …
Run Code Online (Sandbox Code Playgroud) 我在 aws ec2 中配置了 odoo 并在我运行命令./odoo-bin --config=/etc/odoo.conf
并尝试从浏览器访问时从 rds 连接 Postgresql ,我收到以下错误:
ERROR odoo_db odoo.modules.loading: Database odoo_db not initialized, you can force it with `-i base`
File "/opt/odoo/odoo/odoo/modules/registry.py", line 176, in __getitem__
return self.models[model_name]
KeyError: 'ir.http' - - -
Run Code Online (Sandbox Code Playgroud)
而且我也收到此错误:
STATEMENT: SELECT latest_version FROM ir_module_module WHERE name='base'
ERROR odoo_db odoo.sql_db: bad query: SELECT latest_version FROM ir_module_module WHERE name='base'
ERROR: relation "ir_module_module" does not exist
Run Code Online (Sandbox Code Playgroud) odoo-12 ×10
odoo ×8
python ×3
docker ×2
python-3.x ×2
sql ×2
odoo-10 ×1
odoo-11 ×1
postgresql ×1
report ×1
wkhtmltopdf ×1