odoo 12 自建Library Book 模块练习
源地址: https://alanhou.org/odoo12-first-application/
1. 给模块添加icon ![](https://img2018.cnblogs.com/blog/1608688/201906/1608688-20190629105136868-1444932835.png) 新建的模块book原本是没有图标的,现在要给它添加一个icon. 在你新建的模块的static目录下新建一个description目录,然后在里面添加一个icon.png的图标图片,格式必须是png,名字必须是icon. 这个图片你自己从网上下载,然后把名字和格式改成icon.png就可以了。接着去首页update App List ,再搜索你的模块就可以看到效果了。
2. 创建数据模型
在使用之前,应告知 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 标识符、数据表名等都使用下划线(_)。
3. 添加菜单项
现在有了存储数据的模型,需要添加到用户界面中。首先要做的就是添加相应菜单项。编辑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 的记录:
<act_window>元素定义客户端窗口操作,它按顺序通过启用列表和表单视图打开library.book 模型