odoo16 寫好一個(gè)插件的5個(gè)步驟

本章節(jié)我們將向大家介紹用odoo16寫好一個(gè)應(yīng)用插件的5個(gè)步驟。
我們還是以《odoo16 創(chuàng)建第一個(gè)應(yīng)用插件》中的學(xué)生管理為例,在前面出現(xiàn)過的代碼本章中就不再出現(xiàn)。
步驟一:需求分析
步驟說明:
1、需求分析的主要目的是確定項(xiàng)目或系統(tǒng)的目標(biāo)
2、所涉及到的功能在odoo原生代碼中是否已經(jīng)存在;這一步其實(shí)很難,因?yàn)樾枰纎doo到底有哪些功能;
3、如果存在,和我們的需求是否一致,有哪些場(chǎng)景是我們可以借鑒的。
舉例說明:
1、通過需求分析→詳細(xì)設(shè)計(jì)后,得到的E-R圖或流程圖就是我們要開發(fā)的功能。
2、學(xué)生管理在odoo中不存在,我們需要新增模型來實(shí)現(xiàn)。于是我們需要用4個(gè)基礎(chǔ)數(shù)據(jù)模型和2個(gè)業(yè)務(wù)模型來管理學(xué)生。
數(shù)據(jù)模型:年級(jí)、班級(jí)、學(xué)生、課程
業(yè)務(wù)模型:選課、選課明細(xì)
步驟二:模型實(shí)現(xiàn)
步驟說明:
根據(jù)規(guī)范,實(shí)現(xiàn)插件生成、后端模型、權(quán)限控制、前端視圖。
如果是才接觸odoo,這一步驟不需要去關(guān)心字段是否必填、是否可讀、是否可見等字段屬性,哪怕把所有的字段都顯示出來也沒有關(guān)系。
舉例說明:
《odoo16 創(chuàng)建第一個(gè)應(yīng)用插件》這一章的目的就是實(shí)現(xiàn)這一步驟。
步驟三:數(shù)據(jù)表內(nèi)的邏輯關(guān)系
步驟說明:
1、這一步驟就需要去關(guān)心字段是否必填、是否可讀、是否可見、字段跟蹤等字段屬性了,比如學(xué)生的姓名必填;
常用到的有:required、tracking、default,這一部分在odoo字段類型詳解有詳細(xì)說明。
2、數(shù)據(jù)表內(nèi)的字段計(jì)算關(guān)系,比如根據(jù)身份證號(hào)計(jì)算出出生年月和性別;這一步驟會(huì)經(jīng)常用到depends、onchange、constrains,這些稱之為裝飾器;depends和constrains是在數(shù)據(jù)寫入時(shí)觸發(fā),onchange是在前端視圖上變化時(shí)觸發(fā),注意體會(huì)其區(qū)別;
3、有些字段還需要定時(shí)任務(wù)來實(shí)現(xiàn),比如年齡隨著時(shí)間的變化而變化;
舉例說明:
以學(xué)生模型為例:
定時(shí)任務(wù)實(shí)現(xiàn)方式:
在data目錄下增加ir_cron_data.xml
在__manifest__.py中引用
步驟四:數(shù)據(jù)表間的邏輯關(guān)系
步驟說明:
1、比如一個(gè)班級(jí)有多少個(gè)學(xué)生,是班級(jí)表與學(xué)生表之間的關(guān)系;
一個(gè)年級(jí)有多少個(gè)班級(jí),是年級(jí)表與班級(jí)表之間的關(guān)系;
一個(gè)學(xué)生選了多少門課,是學(xué)生表與課程表之間的關(guān)系;
2、這一步驟在后端模型中會(huì)經(jīng)常用到depends、onchange、constrains;在前端視圖中經(jīng)常會(huì)用到oe_button_box在form中顯示關(guān)系;
3、特別注意的是字段的ondelete屬性,True說明父表記錄刪除時(shí),子表也要?jiǎng)h除;比如年級(jí)刪除時(shí),班級(jí)也需要?jiǎng)h除;班級(jí)刪除時(shí),學(xué)生記錄就不需要?jiǎng)h除,因?yàn)閷W(xué)生是通過入學(xué)與班級(jí)關(guān)聯(lián)起來的,不管班級(jí)存不存在,學(xué)生都是存在的,這時(shí)ondelete就是False或者不設(shè)置;
舉例說明:
一個(gè)班級(jí)有多少個(gè)學(xué)生,這里有兩個(gè)方法,一個(gè)是計(jì)算學(xué)生數(shù)量,一個(gè)是查看學(xué)生明細(xì);
class_archives_views.xml
對(duì)應(yīng)的視圖也需要修改,有兩種方式,可以放到button_box里面,也可以放到page頁簽中;
步驟五:業(yè)務(wù)邏輯關(guān)系
步驟說明:
1、當(dāng)把前面的幾個(gè)步驟都實(shí)現(xiàn)時(shí),就可以開始業(yè)務(wù)邏輯關(guān)系代碼的編寫;
2、表內(nèi)狀態(tài)的變化,比如課程設(shè)置好了的確認(rèn);表間的業(yè)務(wù)邏輯關(guān)系,比如學(xué)生的選課,學(xué)生年級(jí)的變化等,都屬于業(yè)務(wù)邏輯關(guān)系,當(dāng)然這是比較簡(jiǎn)單的舉例;
舉例說明:
為學(xué)生設(shè)置了狀態(tài),通過按鈕實(shí)現(xiàn)狀態(tài)的變化;
總結(jié)
作為初學(xué)者,能夠熟練的完成以上5個(gè)步驟就可以了。