odoo 第一個(gè)模塊

官方文檔傳送門(mén)
官方文檔傳送門(mén)

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ù)

Paste_Image.png

打開(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è)置

Paste_Image.png

進(jìn)入設(shè)置,點(diǎn)擊右邊的激活開(kāi)發(fā)者模式

然后進(jìn)入應(yīng)用列表頁(yè)面

Paste_Image.png

點(diǎn)擊左邊的更新應(yīng)用列表

更新完成后 在搜索框中搜索 openacademy ,這里要去掉前邊的 模塊選項(xiàng)

Paste_Image.png

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

Paste_Image.png

打開(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ù)表~

Paste_Image.png

剛才寫(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í)模塊!

Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容