[Odoo12基礎教程]之第一篇-建立Todo應用
宣告:
本教程基於 Ruter 老師的 [Odoo基礎教程系列] ,Ruter老師教程的連結地址為:Odoo基礎教程系列 。
至於為什麼已經有了Ruter老師的教程,還要自己再搬移一份呢?是基於一下幾點考慮的:
1.雖然 Ruter 老師的教程可以說已經非常詳細了,但因為字數限制難免還會有一些步驟需要讀者自己去做,這其中讀者自己操作時可能會出錯;
2.Ruter 老師的教程是基於Odoo11進行指導的,但現在Odoo13即將釋出了,11可能有點落伍了;
3.自己學到的知識才是自己的,將學習中的過程和問題記錄下來,才是屬於自己的知識。
話不多說,下面讓我們進行正題吧。
本章內容總結
- 1.專案前置準備
- 2.建立模組,模組的簡單配置
- 3.model模型及模組安裝
- 4.建立選單檢視
- 5.新增應用到應用列表
- 6.建立任務列表檢視。
專案初始準備
如果你的odoo環境還沒有配合好的話,請參考我的另一篇文章:win10中odoo12環境配置
在配好環境之後,如果要啟動專案,需要新增如下配置:
1.將odoo-bin檔案放在odoo原始碼下,如果沒有odoo-bin檔案,可以將odoo原始碼下的一個odoo.py檔案複製並更名為odoo-bin;
2.在 odoo原始碼/setup/odoo.conf中新增odoo配置,內容如下:
3.pycharm下專案啟動配置,在綠色倒三角形旁邊
4.在odoo原始碼的目錄下建立一個myaddons資料夾,用來存放自己編寫的odoo應用/模組,這裡我的odoo原始碼是從gitee上下載的odoo12原始碼;
為了讓odoo可以檢索到我們自定義myaddons下的模組,我們要將myaddons的路徑加入到模組檢索路徑下
在 odoo.conf 檔案下新增如下配置:
addons_path=E:\YifChanSoft\Odoo\OdooSave\odoo_gitee\odoo\addons,E:\YifChanSoft\Odoo\OdooSave\odoo_gitee\myaddons
前一個是系統模組的路徑,後面一個是我們自定義模組資料夾的路徑
Todo應用
建立模組
在配置好環境之後,win10下執行以下命令可以建立一個應用
python odoo-bin scaffold todo myaddons
以上命令代表,在myaddons目錄下建立一個名為todo的模組。
目錄如下:
建立好todo模組後,我們在 __mainfest__.py 編寫模組的清單檔案:
__mainfest__.py
{ 'name': "todo", # 應用/模組名 'summary': """todo task""", # 對應用/模組的摘要 'description': """Todo task-list the things you need to do.""", # 對應用/模組的描述 'author': "YifChan", # 作者 'application': True, # 將模組變成一個應用,可以在應用中搜索到 'sequence': 1, # 將應用/模組排在所有應用/模組的第一位 }
model模型及模組安裝
在我們的todo應用中,todo任務模型要有 “待辦任務”和“已完成”兩個欄位,
因此,我們在models/models.py中加入如下程式碼:
models/models.py
from odoo import models, fields, api class TodoTask(models.Model): _name = 'todo.task' _description = '待辦事項' name = fields.Char('描述', required=True) is_done = fields.Boolean('已完成?')
在models/__inti__.py中新增如下程式碼:
from . import models
此時我們的專案已經可以在應用中被找到了
開啟瀏覽器進入 http://127.0.0.1:8069 ,如果你是第一次進入的話,可能需要進行如下配置
其中各個的含義如下:
- master password:資料庫中超級管理員的密碼
- database name:將為你現在odoo原始碼建立的pg資料庫
- email:odoo管理員,可以不是郵箱,名字任取
- password:odoo管理員密碼
填寫進入後,我們點選頁面左上角的田字形符號,選擇引數設定,點選右邊的 啟用開發者模式,截圖如下:
不要糾結我左上角的todo,這是因為我已經裝好並配置好了,原來只有todo下面的兩列。
啟用開發者模式之後,我們繼續點選田字形符號裡的應用,然後點選導航條上的重新整理本地模組列表。
這樣我們就可以在右上角的搜尋框中搜索todo了,如果是模組的話,記得叉掉應用後再查詢模組名,這裡因為我們已經配置了todo為應用,所以可以直接查詢,查詢結果如下:
點選安裝,然後會重新整理,但是重新整理後你會發現還是回到了應用頁面,並且再次搜尋todo後,會顯示已安裝。
我們還不能進入todo應用頁面,這是因為我們還沒有給todo新增應用入口,下面我們來進行新增。
建立選單
在views資料夾下,我們建立一個 views/todo_menus.xml 檔案,並新增如下內容
<?xml version="1.0" encoding="utf-8"?> <odoo> <data> <!-- 主選單定義 --> <menuitem id="menu_todo" name="Todo"/> <!-- 選單動作定義 --> <record id="action_todo_task" model="ir.actions.act_window"> <field name="name">待辦事項</field> <field name="res_model">todo.task</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> <field name="target">current</field> </record> <!-- 子選單定義 --> <menuitem action="action_todo_task" id="submenu_todo_task" name="待辦事項" parent="menu_todo" sequence="10"/> </data> </odoo>
將todo_menus.xml檔案新增入data列表中:
__mainfest__.py
'data': [ 'views/views.xml', 'views/templates.xml', 'views/todo_menus.xml', ],
搜尋模組,點選模組右上角的三點,進行升級模組。
注意事項
- 在odoo中,如果你修改了xml檔案,你所做的修改要升級應用後才能生效;
- 如果你修改了py檔案,要重啟專案並且升級應用後才能使修改生效;但是我個人習慣,只要修改了,就重啟專案並且升級應用。
- 當你新增一個xml檢視檔案或者許可權檔案後,要將檔案放入應用下的__mainfest__.py檔案的data列表中。
- 當你新建了一個python相關的資料夾,要在專案下的__init__.py檔案中引入資料夾;
- 當你在應用下的某個資料夾中新建了一個要自動初始化的py檔案,要在該資料夾中的__init__.py檔案中引入你所新增的py檔案。
以上幾點很重要,故在此統一列出,在後面可能不會再贅述,請讀者牢記。
新增應用到應用列表
到了上一步其實我們還是不能觀察到變化,這是因為我們還沒有新增應用到應用列表中,即左上角的田字形列表中,先展示一下效果圖:
為了實現這個,我們要確保一下三點:
- 1,有model模型,
- 2,在model模型的基礎上,menu.xml中有具體子選單項及動作
- 3,在csv許可權中有檢視model的許可權並將csv檔案新增到data列表中
前面我們已經實現了model模型,和選單xml,接下來我們實現第三點,
我們給security/ir.model.access.csv檔案中新增如下內容:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_todo_task,todo.task,model_todo_task,,1,1,1,1
這裡是給todo.task模型賦予增刪改查的許可權。
做完這個我們還要將這個檔案新增到data列表中,其實只要解開該檔案的註釋即可,如下:
'data': [ 'security/ir.model.access.csv', ],
重啟專案,升級模組。
至此,我們可以點選左上角的下拉選單並可以點選todo應用來進入應用,我們可以看到如下內容:
你可以點選建立一個任務看看。
建立任務列表檢視
通過上一步我們已經可以看到任務列表了,這個是系統為我們自動配置的檢視。
但是我們只能看到任務的name欄位,而無法直接看見任務是否完成,此時,我們可以配置自己的檢視來按照自己的需求來顯示任務列表。
建立 views/todo_views.xml,並在其中加入如下內容
<odoo> <data> <!-- 待辦事項列表顯示檢視 --> <record id="todo_task_view_tree" model="ir.ui.view"> <field name="name">todo.task.view_tree</field> <field name="model">todo.task</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree string="Todo"> <field name="name"/> <field name="is_done"/> </tree> </field> </record> </data> </odoo>
將todo_view.xml加入data列表中。
升級應用後我們可以看到如下內容:
本節內容基本到此結束了。
&n