源地址: https://alanhou.org/odoo12-first-application/
- 给模块添加icon
新建的模块book原本是没有图标的,现在要给它添加一个icon.
在你新建的模块的static目录下新建一个description目录,然后在里面添加一个icon.png的图标图片,格式必须是png,名字必须是icon. 这个图片你自己从网上下载,然后把名字和格式改成icon.png就可以了。接着去首页update App List ,再搜索你的模块就可以看到效果了。
- 创建数据模型
在使用之前,应告知 Python 所需引用的模型目录,仅需在模块根目录__init__.py文件添加:
from . import models
要引用所创建的 Python 代码文件,我们还应添加models/init.py文件:
from . import library_book
现在我们可以在models/library_book.py中加入如下内容:
from odoo import fields, models
class Book(models.Model):
_name = 'library.book'
_description = 'Book'
name = fields.Char('Title', required=True)
isbn = fields.Char('ISBN')
active = fields.Boolean('Active?', default=True)
date_published = fields.Date()
image = fields.Binary('Cover')
publisher_id = fields.Many2one('res.partner', string='Publisher')
author_ids = fields.Many2many('res.partner', string='Authors')
第一行是 Python 代码导入语句,让 Odoo 内核的models和fields对象在这里可用。紧接着声明了新的模型,它是models.Model派生出的一个类。然后_name 属性定义了 Odoo 全局对该模型引用的标识符。注意Python 类名 Book 与框架无关,_name 的值才是模型的标识符。
小贴士:仅有模型名使用点号(.) 来分割关键字,其它如模块、XML 标识符、数据表名等都使用下划线(_)。
- 添加菜单项
现在有了存储数据的模型,需要添加到用户界面中。首先要做的就是添加相应菜单项。编辑views/library_menu.xml文件,在 XML 元素中定义菜单项以及执行的操作:
<!-- Action to open the Book list -->
<act_window id="action_library_book"
name="Library Books"
res_model="library.book"
view_mode="tree,form"
/>
<!-- Menu item to open the Book list -->
<menuitem id="menu_library_book"
name="Books"
parent="menu_library"
action="action_library_book"
/>
用户界面,包括菜单项和操作,存储在数据表中。在安装或升级插件模块时,XML文件会将这些定义载入数据库中的数据文件。以上代码是一个 Odoo 数据文件,表示两条添加到 Odoo 的记录:
- 创建表单视图
所有的视图都存储在数据库ir.ui.view模型中。为模型添加视图,我们在 XML文件中声明
添加views/book_view.xml文件来定义表单视图:
这个ir.ui.view记录有三个字段值:name, model和 arch。另一个重要元素是记录 id,它定义了一个可在其它记录中引用的XML ID标识符。这是library.book 模型的视图,名为Book Form。这个名称仅用于提供信息,无需唯一,但应易于分辨所引用的记录。其实可以完全省略 name,这种情况下会自动按模型名和视图类型来生成。
最重要的字段是arch,它包含了视图的定义。
这个name属性不是固定的,可以根据自己的想法取名,第一个