odoo模塊的組成
Bussiness objects
業(yè)務(wù)邏輯,一些python class
Data files
數(shù)據(jù)文件 xml/csv文件
Web Controllers
web控制器,處理http請(qǐng)求
Static web data
靜態(tài)文件,圖片/css/js
模塊的結(jié)構(gòu)
模塊的加載目錄
--addons-path
odoo模塊是一個(gè)python模塊,本質(zhì)上是一個(gè)包含 init.py 的目錄
odoo模塊需要有一個(gè)manfiest文件 openerp.py
創(chuàng)建模塊
python odoo-bin scaffold openacademy myaddons
在 myaddons中創(chuàng)建模塊 openacademy
刷新文件夾可以看到myaddons文件夾中有了新數(shù)據(jù)

打開(kāi) myaddons/openacademy/manifest.py 文件
可以看到這是一些對(duì)該模塊的一些描述,需要加載的數(shù)據(jù)什么的
controllers 文件夾算是路由吧
models 文件夾是model,ORM 對(duì)應(yīng)了數(shù)據(jù)庫(kù)中的表結(jié)構(gòu),可以簡(jiǎn)化書(shū)寫(xiě)SQL語(yǔ)句的煩惱
views 文件夾是視圖,通過(guò)xml文件渲染
1. 修改model文件,ORM
打開(kāi) 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()
一個(gè)類(lèi)對(duì)應(yīng)了數(shù)據(jù)庫(kù)的一張表,需要繼承自 models.Model 。
_name會(huì)對(duì)應(yīng)數(shù)據(jù)庫(kù)的表名,但是數(shù)據(jù)庫(kù)中的名字略有不同的是, .會(huì)轉(zhuǎn)換成_
也就是說(shuō) openacademy.openacdemy 會(huì)對(duì)應(yīng)數(shù)據(jù)庫(kù)中的 openacademy_openacademy表
name 則是表的一個(gè)字段,數(shù)據(jù)類(lèi)型是 Char類(lèi)型
requried=True 表示是必填字段
好了,現(xiàn)在數(shù)據(jù)庫(kù)有了,下一步就是數(shù)據(jù)的顯示了
2. 重啟服務(wù)器,進(jìn)行設(shè)置

進(jìn)入設(shè)置,點(diǎn)擊右邊的激活開(kāi)發(fā)者模式
然后進(jìn)入應(yīng)用列表頁(yè)面

點(diǎn)擊左邊的更新應(yīng)用列表
更新完成后 在搜索框中搜索 openacademy ,這里要去掉前邊的 模塊選項(xiàng)

沒(méi)錯(cuò),點(diǎn)擊安裝!

打開(kāi)數(shù)據(jù)庫(kù)發(fā)現(xiàn) openacademy_openacademy 已經(jīng)創(chuàng)建
已經(jīng)有了我們寫(xiě)的 name 和 description字段了,其余的字段是默認(rèn)生成的
3. 修改xml文件用于顯示
打開(kāi)views/views.xml 文件
<odoo>
<data>
<record model="{model name}" id="{record identifier}">
<field name="{a field name}">{a value}</field>
</record>
</data>
</odoo>
這里已經(jīng)說(shuō)的很清楚了,于是按照我們寫(xiě)的進(jìn)行替換就可以了
<odoo>
<data>
<record model="openacademy.openacademy" id="openacademy_view">
<field name="name">Hello world</field>
</record>
</data>
</odoo>
重新更新模塊,上面已經(jīng)提到就不用重復(fù)了,值得一提的是:修改python文件是需要重啟服務(wù)器的再升級(jí)模塊,而只修改xml文件的話(huà)不用重啟服務(wù)器,只要升級(jí)模塊即
可
重新刷新數(shù)據(jù)庫(kù)表~

剛才寫(xiě)的數(shù)據(jù)已經(jīng)寫(xiě)到數(shù)據(jù)庫(kù)啦
再添加幾條數(shù)據(jù)應(yīng)該很簡(jiǎn)單了吧?
<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中加上幾句就好了啦
不要忘了升級(jí)模塊!
