我在这里读到,您可以使用命令构建模块,因此您无需手动创建一些初始文件。但是这样的命令在 master 上不起作用(在 Odoo 开发分支上):
./oe scaffold Academy ../my-modules
oe
因为在 openerp 目录中没有调用这样的文件。这个东西在最新版本中有变化吗?如何在 Odoo 中搭建模块?
在 shell 或终端上,将目录更改为您的 odoo 文件夹。也许它在/opt/odoo
,或者它在/home/odoo
:
cd /opt/odoo
使用 odoo.py 脚本创建一个新模块:
./odoo.py scaffold my_new_module ./addons/
(其中 my_new_module 是新模块的名称,./addons/ 是 Odoo 插件目录)
编辑 ./addons/my_new_module/__openerp__.py 文件。
nano ./addons/my_new_module/__openerp__.py
更改名称字段以设置模块的用户友好名称(例如“Andrius 的新模块”)。更改描述和字段。并将您需要的模块(例如“邮件”)添加到模块依赖项依赖列表中。
'depends': ['base', 'mail'],
编辑模型.py
nano ./addons/my_new_module/models.py
在 my_new_module/models.py 文件中添加代码,例如:
from openerp import models, api
class FooterlessNotification(models.Model)
_inherit = 'mail.notification'
@api.model
def get_signature_footer(self, user_id, res_model=None, res_id=None, context=None, user_signature=True):
return ""
(例如,此代码将扩展“mail.notification”模型并将其 get_signature_footer 方法替换为返回空页脚的方法。)
要在那里找到它,您可能需要使用“更新模块列表”选项。
如果您也找不到“更新模块列表”选项,您可能需要在当前用户的设置中启用“技术功能”复选框。
要显示模块,而不仅仅是应用程序,请从搜索框过滤器中删除标记“应用程序”,方法是单击标记前的小“x”。
您可以使用
./odoo-bin scaffold MODULE_NAME PATH_TO_STORE_YOUR_MODULE_OR_ADDONS
例如:
./odoo-bin scaffold module_name /odoo/odoo-server/custom_addons/
这里 custom_addons 是您在 odoo-server/ 中的目录
Odoo10中的cmd:
./odoo-bin scaffold <module_name> <destination path where you want to create>
使用odoo.py
代替oe
:
./path/to/odoo/odoo.py scaffold my-module
从 odoo 文档中创建模块的正确方法如下:
odoo.py scaffold [name of module] [desired path of module]
另外我建议您为您的模块使用不同的插件路径并且不要使用 odoo/addons,您可以在需要的位置创建一个新目录,然后将此目录添加到 odoo 配置或从启动时使用此插件执行 odoo
odoo.py --addons-path=[full path to your dir]
我已经在 AWS 的 /opt/odoo 目录中安装了 ODOO 9。
所以首先我改变目录:
cd /opt/odoo
然后执行:
odoo.py scaffold modulename ./addons/
给出以下错误消息:
odoo.py command not found
对我有用的正确命令是:
sudo python odoo.py scaffold modulename ./addons/
希望这可以帮助。
./“odoo.py 文件的路径”/odoo.py脚手架my-module ./“新插件的路径”/
用你的路径替换 qoutes
另一个版本
\###### begin ########
import sys
from openerp.cli import scaffold
sf = scaffold.Scaffold()
sf.run (sys.argv[1:])
\####### end #########
将顶部的脚本保存到您的openerp
文件夹中。然后执行:
$ python (your-script-name) --help
或者:
$ python (the-script-name) --init Academy --dest my-modules --model academy --controller academy --web --theme
您是作为源代码还是软件包安装的。
对于你需要做的源
./odoo.py scaffold [module_name] [where_to_put_it]
如果从包裹中你需要做
odoo.py scaffold [module_name] [where_to_put_it]
[where_to_put_it] 通常是您的插件路径,您的插件路径可能会根据您的安装方法而有所不同。
无需在 addons 文件夹中创建模块。但建议这样做。您可以添加新的插件路径
odoo.py --addons-path=[where_to_put_it]
用于模块结构参考和构建模块。
在某些情况下,需要将 Odoo python 文件传递给 Python 应用程序来执行。
python odoo.py scaffold modulename addons-path
转到终端并输入以下命令:
cd path/to/your/odoo-version/
./odoo-bin scaffold new_module /path/to/your/odoo-version/addons
然后转到 /path/to/your/odoo-version/addons 并刷新,您可以看到“new_module”将出现。
我建议您迈出 Git 克隆 odoo 的第一步。创建一个目录/文件夹,然后在您的目录/文件夹上 Git 克隆 odoo。运行之后,Python odoo.py 脚手架插件 test123。将或模块放在目录/文件夹插件上,以确保 odoo 可以读取您的模块。
如果您使用的是 odoo-10 或 11,则不要使用./oe scaffold Academy ../my-modules
use : ./odoo-bin scaffold new_module /path/to/your/odoo-version/addons
如果你使用 odoo8 即 openerp8 然后使用odoo.py scaffold <module name> <where to put it>
但请确保您位于目录中的正确位置。还可以在链接中找到教程: https ://www.odoo.com/documentation/8.0/howtos/backend.html
- 谢谢
ABhay S
这是我的答案
cd path/to/odoo/odoo-server/
然后
./odoo-bin scaffold new_module_name /path/to/custom/addons
现在检查 /path/to/custom/addons,您将看到新模块,您可以在其中开始添加内容。
首先更改您的 odoo 源所在的目录: /opt/odoo
然后写这个命令: ./odoo-bin scaffold my_module_name /path-where-to-create
示例: ./odoo-bin 脚手架 odoo_module /Desktop/Repository
我的文件结构:-
Odoo |-- 插件 |-- debian |-- 文档 |-- 设置 |-- odoo-bin
要使用脚手架,您必须 cd 到 (Odoo) 文件夹,然后使用此命令
python3 odoo-bin 脚手架 name_of_your_module path_of_your_module
如果我想在 odoo/addons 创建一个名为 test 的模块
我只会使用命令:-
python3 odoo-bin 脚手架测试 odoo/addons
笔记:-
在 ubuntu 20.04 上安装的 Odoo v14 中,我使用
odoo scaffold module_name /opt/extra-addons
这是一个非常简单的答案:
如果您使用的是 Odoo v10+,只需使用以下命令:
./odoo-bin scaffold new_module_name
如果你在 Odoo.sh 上,你可以这样做:
odoo-bin scaffold new_module_name
我最近写了一篇关于这个主题的博客,并提供了不同的差异和论点,这将有助于维护新的自定义模块开发。
https://odedrabhavesh.blogspot.com/2021/09/how-to-create-odoo-custom-module-in-one-command.html
可能此代码会有所帮助。将其保存为moe.py
您想要的任何内容。
from openerp.cli import scaffold
sf = scaffold.Scaffold()
#sf.run(["--help"])
sf.run (["--init","Academy","--model","academy","--controller","academy","--web","--theme"])
我还是 Python 编程的新手。如果有人可以改进向run()
函数发送参数的方式,那就太好了。