声明:
本教程基于 Ruter 老师的 [Odoo 基础教程系列] ,Ruter 老师教程的链接地址为: Odoo 基础教程系列 https://segmentfault.com/u/ruter .
至于为什么已经有了 Ruter 老师的教程, 还要自己再搬移一份呢? 是基于一下几点考虑的:
1. 虽然 Ruter 老师的教程可以说已经非常详细了, 但因为字数限制难免还会有一些步骤需要读者自己去做, 这其中读者自己操作时可能会出错;
2.Ruter 老师的教程是基于 Odoo11 进行指导的, 但现在 Odoo13 即将发布了, 11 可能有点落伍了;
3. 自己学到的知识才是自己的, 将学习中的过程和问题记录下来, 才是属于自己的知识.
话不多说, 下面让我们进行正题吧.
本章内容总结
1. 项目前置准备
2. 创建模块, 模块的简单配置
3.model 模型及模块安装
4. 创建菜单视图
5. 添加应用到应用列表
6. 创建任务列表视图.
项目初始准备
如果你的 odoo 环境还没有配合好的话, 请参考我的另一篇文章: win10 中 odoo12 环境配置
在配好环境之后, 如果要启动项目, 需要添加如下配置:
1. 将 odoo-bin 文件放在 odoo 源码下, 如果没有 odoo-bin 文件, 可以将 odoo 源码下的一个 odoo.py 文件复制并更名为 odoo-bin;
2. 在 odoo 源码 / setup/odoo.conf 中添加 odoo 配置, 内容如下:
3.pycharm 下项目启动配置, 在绿色倒三角形旁边
4. 在 odoo 源码的目录下创建一个 myaddons 文件夹, 用来存放自己编写的 odoo 应用 / 模块, 这里我的 odoo 源码是从 gitee 上下载的 odoo12 源码;
为了让 odoo 可以检索到我们自定义 myaddons 下的模块, 我们要将 myaddons 的路径加入到模块检索路径下
在 odoo.conf 文件下添加如下配置:
addons_path=E:\YifChanSoft\Odoo\OdooSave\odoo_gitee\odoo\addons,E:\YifChanSoft\Odoo\OdooSave\odoo_gitee\myaddons
前一个是系统模块的路径, 后面一个是我们自定义模块文件夹的路径
Todo 应用
创建模块
在配置好环境之后, win10 下执行以下命令可以创建一个应用
python odoo-bin scaffold todo myaddons
以上命令代表, 在 myaddons 目录下创建一个名为 todo 的模块.
目录如下:
创建好 todo 模块后, 我们在 __mainfest__.py 编写模块的清单文件:
__mainfest__.py
- {
- 'name': "todo", # 应用 / 模块名
- 'summary': """todo task""", # 对应用 / 模块的摘要
- 'description': """Todo task-list the things you need to do.""", # 对应用 / 模块的描述
- 'author': "YifChan", # 作者
- 'application': True, # 将模块变成一个应用, 可以在应用中搜索到
- 'sequence': 1, # 将应用 / 模块排在所有应用 / 模块的第一位
- }
model 模型及模块安装
在我们的 todo 应用中, todo 任务模型要有 "待办任务" 和 "已完成" 两个字段,
因此, 我们在 models/models.py 中加入如下代码:
models/models.py
- from odoo import models, fields, API
- class TodoTask(models.Model):
- _name = 'todo.task'
- _description = '待办事项'
- name = fields.Char('描述', required=True)
- is_done = fields.Boolean('已完成?')
在 models/__inti__.py 中添加如下代码:
from . import models
此时我们的项目已经可以在应用中被找到了
打开浏览器进入 http://127.0.0.1:8069 , 如果你是第一次进入的话, 可能需要进行如下配置
其中各个的含义如下:
master password: 数据库中超级管理员的密码
database name: 将为你现在 odoo 源码创建的 pg 数据库
email:odoo 管理员, 可以不是邮箱, 名字任取
password:odoo 管理员密码
填写进入后, 我们点击页面左上角的田字形符号, 选择参数设置, 点击右边的 激活开发者模式, 截图如下:
不要纠结我左上角的 todo, 这是因为我已经装好并配置好了, 原来只有 todo 下面的两列.
激活开发者模式之后, 我们继续点击田字形符号里的应用, 然后点击导航条上的刷新本地模块列表.
这样我们就可以在右上角的搜索框中搜索 todo 了, 如果是模块的话, 记得叉掉应用后再查找模块名, 这里因为我们已经配置了 todo 为应用, 所以可以直接查找, 查找结果如下:
点击安装, 然后会刷新, 但是刷新后你会发现还是回到了应用页面, 并且再次搜索 todo 后, 会显示已安装.
我们还不能进入 todo 应用页面, 这是因为我们还没有给 todo 添加应用入口, 下面我们来进行添加.
创建菜单
在 views 文件夹下, 我们创建一个 views/todo_menus.xml 文件, 并添加如下内容
- <?xml version="1.0" encoding="utf-8"?>
- <odoo>
- <data>
- <!-- 主菜单定义 -->
- <menuitem id="menu_todo" name="Todo"/>
- <!-- 菜单动作定义 -->
- <record id="action_todo_task" model="ir.actions.act_window">
- <field name="name"> 待办事项 </field>
- <field name="res_model">todo.task</field>
- <field name="view_type">form</field>
- <field name="view_mode">tree,form</field>
- <field name="target">current</field>
- </record>
- <!-- 子菜单定义 -->
- <menuitem action="action_todo_task" id="submenu_todo_task" name="待办事项"
- parent="menu_todo" sequence="10"/>
- </data>
- </odoo>
将 todo_menus.xml 文件添加入 data 列表中:
__mainfest__.py
- 'data': [
- 'views/views.xml',
- 'views/templates.xml',
- 'views/todo_menus.xml',
- ],
搜索模块, 点击模块右上角的三点, 进行升级模块.
注意事项
在 odoo 中, 如果你修改了 xml 文件, 你所做的修改要升级应用后才能生效;
如果你修改了 py 文件, 要重启项目并且升级应用后才能使修改生效; 但是我个人习惯, 只要修改了, 就重启项目并且升级应用.
当你添加一个 xml 视图文件或者权限文件后, 要将文件放入应用下的__mainfest__.py 文件的 data 列表中.
当你新建了一个 python 相关的文件夹, 要在项目下的__init__.py 文件中引入文件夹;
当你在应用下的某个文件夹中新建了一个要自动初始化的 py 文件, 要在该文件夹中的__init__.py 文件中引入你所添加的 py 文件.
以上几点很重要, 故在此统一列出, 在后面可能不会再赘述, 请读者牢记.
添加应用到应用列表
到了上一步其实我们还是不能观察到变化, 这是因为我们还没有添加应用到应用列表中, 即左上角的田字形列表中, 先展示一下效果图:
为了实现这个, 我们要确保一下三点:
1, 有 model 模型,
2, 在 model 模型的基础上, menu.xml 中有具体子菜单项及动作
3, 在 CSV 权限中有查看 model 的权限并将 CSV 文件添加到 data 列表中
前面我们已经实现了 model 模型, 和菜单 xml, 接下来我们实现第三点,
我们给 security/ir.model.access.CSV 文件中添加如下内容:
- id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
- access_todo_task,todo.task,model_todo_task,,1,1,1,1
这里是给 todo.task 模型赋予增删改查的权限.
做完这个我们还要将这个文件添加到 data 列表中, 其实只要解开该文件的注释即可, 如下:
- 'data': [
- 'security/ir.model.access.csv',
- ],
重启项目, 升级模块.
至此, 我们可以点击左上角的下拉菜单并可以点击 todo 应用来进入应用, 我们可以看到如下内容:
你可以点击创建一个任务看看.
创建任务列表视图
通过上一步我们已经可以看到任务列表了, 这个是系统为我们自动配置的视图.
但是我们只能看到任务的 name 字段, 而无法直接看见任务是否完成, 此时, 我们可以配置自己的视图来按照自己的需求来显示任务列表.
创建 views/todo_views.xml, 并在其中加入如下内容
- <odoo>
- <data>
- <!-- 待办事项列表显示视图 -->
- <record id="todo_task_view_tree" model="ir.ui.view">
- <field name="name">todo.task.view_tree</field>
- <field name="model">todo.task</field>
- <field name="type">tree</field>
- <field name="arch" type="xml">
- <tree string="Todo">
- <field name="name"/>
- <field name="is_done"/>
- </tree>
- </field>
- </record>
- </data>
- </odoo>
将 todo_view.xml 加入 data 列表中.
升级应用后我们可以看到如下内容:
本节内容基本到此结束了.
来源: https://www.cnblogs.com/yifchan/p/odoo-1-3.html