odoo模块开发

odoo脚手架

为了方便开发odoo模块,可以在项目的终端中输入

python odoo-bin scaffold addons myaddons 

这样就在项目的myaddons文件夹中生成了名称addons的模块。

odoo规范

odoo开发规范 | 同欣数字化落地 (txodoo.cn)

odoo结构

  • controllers: 主要是一些HTTP请求相关的业务逻辑。
  • models: 模型文件夹,业务的模型都放在这里。
  • security: 权限相关的文件。
  • views: 视图文件夹,关于界面布局的逻辑在这里。
  • static: 静态文件夹,前端使用的qweb文件和js、css文件和图片等静态文件放到这个文件夹内。
  • __init__:熟悉python的都懂,不说了
  • __manifest__: 9.0之前叫_openerp_.py,Odoo模块必须的文件,包含必要的模块信息。

模型(model)

odoo模块的模型通常在models/目录下,当新增模型时,需要在models/__init__.py中增加模型名称。

odoo所有的持久化模型都要继承自models.Model类。

在脚手架生成的事例中,_name是这个models的名称,而_description是models的描述,当我们要继承某个models的时候,我们可以用_inherit表示继承。

继承:被继承models会拥有继承的models的所有字段。

字段(fields)

上述例子中,给一个变量初始化定义后被称为字段。

odoo有许多字段:

  1. 字符串字段(Char):用于存储文本数据,如名称、标题等。
  2. 整数字段(Integer):用于存储整数值,如计数器、年龄等。
  3. 浮点数字段(Float):用于存储浮点数值,如价格、百分比等。
  4. 布尔字段(Boolean):用于存储布尔值(True或False),如开关状态、勾选框等。
  5. 日期字段(Date):用于存储日期值,如生日、合同日期等。
  6. 日期时间字段(Datetime):用于存储日期和时间值,如创建时间、更新时间等。
  7. 二进制字段(Binary):用于存储二进制数据,如图像、文件等。
  8. 选择字段(Selection):用于从预定义选项中选择一个值,如状态、类型等。
  9. 文本字段(Text):用于存储多行文本数据,如描述、备注等。
  10. HTML字段(Html):用于存储富文本数据,支持HTML格式,如富文本公告、邮件正文等。
  11. 关系字段(Many2one、One2many、Many2many):用于建立与其他模型之间的关联关系,如产品与供应商的关系、订单与产品的关系等。

方法

模型中存在方法,可以进行较为复杂数据处理。

常见的方法有:

  1. create(self, values):用于创建新记录,接收一个字典参数values,包含要创建记录的字段值。
  2. write(self, values):用于更新现有记录,接收一个字典参数values,包含要更新记录的字段值。
  3. unlink(self):用于删除记录。
  4. read(self, fields=None):用于读取记录的字段值,可以指定要读取的字段列表。
  5. search(self, domain=None, offset=0, limit=None, order=None):用于根据条件搜索符合要求的记录。
  6. browse(self, ids):用于获取指定记录ID的记录对象。
  7. copy(self, default=None):用于复制记录,可以指定默认值来更改复制记录的字段值。
  8. onchange(self, field_name):用于在字段值发生变化时触发的方法,可以在该方法中处理其他字段的变化或执行其他操作。
  9. compute(self):用于计算字段的值,通过该方法可以定义计算字段的逻辑。
  10. action_xxx(self):用于执行自定义的动作,其中"xxx"表示动作的名称,可以根据需要定义不同的动作方法。
  11. button_xxx(self):用于执行与按钮相关的操作,通常用于处理用户交互。
  12. _get_xxx(self):用于获取计算字段的值,其中"xxx"表示计算字段的名称。
  13. _set_xxx(self, value):用于设置计算字段的值,其中"xxx"表示计算字段的名称。

注解

如上述图中的方法上面的称为注解。

注解一般有以下几种:

  1. @api.one:用于标记实例方法,表示该方法将在单个记录上执行。
  2. @api.depends('field_name'):用于指定计算字段(computed field)所依赖的字段。当被依赖的字段发生变化时,计算字段将被重新计算。
  3. @api.onchange('field_name'):用于标记字段变化触发的方法。当指定的字段值发生变化时,该方法将被自动调用。
  4. @api.constrains('field_name'):用于标记约束方法,用于执行字段级别的约束检查。
  5. @api.constraints('constraint_name'):用于标记约束方法,并指定约束名称。可以在模型中定义多个约束方法。
  6. @api.model_create_multi:用于标记创建多个记录的方法。通常用于批量创建记录的情况。
  7. @api.model_create_single:用于标记创建单个记录的方法。
  8. @api.returns('model_name'):用于指定方法的返回类型,其中'model_name'表示返回模型的名称。

视图(view)

odoo模块下的视图文件通常在view/目录下,当新增视图文件时,需要在__manifast__.py的'data'中添加。

视图文件有先后顺序,请务必检查,否则会报错。

动作视图(action)

在系统上每一个交互就是一个动作,动作视图是交互时的一个引导。

图中定义了addons.action_window的动作视图,模型是addons.addons,包含的视图为tree,form视图。

列表视图(tree)

用于以表格形式显示多个记录,每行代表一个记录,可以选择显示的字段和排序方式。

表单视图(form)

用于显示单个记录的详细信息,通常包含各个字段和相关操作按钮。

搜索视图(search)

用于定义搜索记录的条件和过滤器,用户可以根据特定条件搜索符合要求的记录。

报表视图(report)

用于生成和显示打印或导出的报表,可以基于模板定义报表的结构和样式。一般将报表视图存放在report/目录下。

看板视图(kanban)

用于以卡片形式显示记录,每个卡片代表一个记录,可以根据状态进行分组和拖放操作。

菜单(menuitem)

菜单是显示模块的入口。

小部件(widget)

url<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值