odoo模块的组成
Bussiness objects
业务逻辑,一些python class
Data files
数据文件 xml/csv文件
Web Controllers
web控制器,处理http请求
Static web data
静态文件,图片/css/js
模块的结构
模块的加载目录
--addons-path
odoo模块是一个python模块,本质上是一个包含 init.py 的目录
odoo模块需要有一个manfiest文件 openerp.py
创建模块
python odoo-bin scaffold openacademy myaddons
在 myaddons中创建模块 openacademy
刷新文件夹可以看到myaddons文件夹中有了新数据
打开 myaddons/openacademy/manifest.py 文件
可以看到这是一些对该模块的一些描述,需要加载的数据什么的
controllers 文件夹算是路由吧
models 文件夹是model,ORM 对应了数据库中的表结构,可以简化书写SQL语句的烦恼
views 文件夹是视图,通过xml文件渲染
1. 修改model文件,ORM
打开 models.py文件
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class openacademy(models.Model):
_name = 'openacademy.openacademy'
name = fields.Char(required=True)
description = fields.Text()
一个类对应了数据库的一张表,需要继承自 models.Model 。
_name
会对应数据库的表名,但是数据库中的名字略有不同的是, .
会转换成_
也就是说 openacademy.openacdemy
会对应数据库中的 openacademy_openacademy
表
name 则是表的一个字段,数据类型是 Char类型
requried=True 表示是必填字段
好了,现在数据库有了,下一步就是数据的显示了
2. 重启服务器,进行设置
进入设置,点击右边的激活开发者模式
然后进入应用列表页面
点击左边的更新应用列表
更新完成后 在搜索框中搜索 openacademy ,这里要去掉前边的 模块选项
没错,点击安装!
打开数据库发现 openacademy_openacademy 已经创建
已经有了我们写的 name 和 description字段了,其余的字段是默认生成的
3. 修改xml文件用于显示
打开views/views.xml 文件
<odoo>
<data>
<record model="{model name}" id="{record identifier}">
<field name="{a field name}">{a value}</field>
</record>
</data>
</odoo>
这里已经说的很清楚了,于是按照我们写的进行替换就可以了
<odoo>
<data>
<record model="openacademy.openacademy" id="openacademy_view">
<field name="name">Hello world</field>
</record>
</data>
</odoo>
重新更新模块,上面已经提到就不用重复了,值得一提的是:修改python文件是需要重启服务器的再升级模块,而只修改xml文件的话不用重启服务器,只要升级模块即
可
重新刷新数据库表~
刚才写的数据已经写到数据库啦
再添加几条数据应该很简单了吧?
<record model="openacademy.openacademy" id="openacademy_view">
<field name="name">Hello world</field>
</record>
<record model="openacademy.openacademy" id="openacademy_view2">
<field name="name">Hello Odoo</field>
<field name="description">Odod 踩坑</field>
</record>
<record model="openacademy.openacademy" id="openacademy_view3">
<field name="name">Hello Python</field>
<field name="description">生活不易,我用Python</field>
</record>
只要在xml中加上几句就好了啦
不要忘了升级模块!