2.odoo13的学习(odoo中的模型、模型类属性、字段属性等)
目錄
1.什么是模型
?2.模型的定義
2.1 模型的位置
2.2 初始模型類
2.3 模型類的常用屬性
2.4 模型類字段的屬性參數
2.5 模型類創建好后,odoo默認創建一些字段
2.6 初始模型類結合菜單查看效果
2.6.1 菜單的定義
2.6.2 action的定義(動作)
2.6.3 查看創建的模塊和進行操作以及保存創建數據
3.命名規范
3.1模型命名規范
3.2菜單命名規范
3.3視圖命名規范
4.odoo修改后代碼不生效的問題
1.什么是模型
????????odoo通過orm來實現對數據庫的操作,可以通過在odoo中定義模型,然后根據定義的模型來生成數據庫中的表,并通過python中操作對象的方式,來進行對數據庫的操作,大部分場景下不在需要寫SQL語句,提高了數據庫操作的效率以及安全性
?2.模型的定義
2.1 模型的位置
模型在創建好的模塊文件里面的model類
?Odoo的一個關鍵組件是ORM層。該層避免了手動編寫大多數SQL并提供可擴展性和安全性服務。業務系統通過繼承Model類,定義成python對象,通過該對象與后臺數據庫進行自動化集成。
2.2 初始模型類
例如:我們建立一個考試教室的模型類
class TestRoomModel(models.Model):# 模型名稱,類的唯一標識,其他類可以通過此字段引用本類_name = 'test.test_room'# 多模型類的描述,提高查詢的友好性,為用戶查看該模型的標題_description = 'test_room 'name = fields.Char()seat_num = fields.Integer()- ?odoo中一個模型就是一個模型類,繼承models.Model
- _name屬性,它用來定義模型名稱, 一般是? ?模塊名稱.模型類名稱
模型類建立好之后,在Django中是要通過遷移命令完成的,在odoo中是找到該應用之后點擊升級完成的,如下圖
注意,沒安裝的點擊安裝后,才會出現升級的操作,然后點擊升級
我們到數據庫里面查找生成數據庫表以及字段,如下圖,里面就有我們的數字字段
默認的表名是把? _name里面的值,中的點換成了下劃線
2.3 模型類的常用屬性
| _name | 類的唯一標識,其他類可以通過此字段引用本類 |
| _description | 對模型的簡單描述 |
| _order | 設置該模型展示時默認的排序字段 |
| _rec_name | odoo默認使用name字段,作為數據記錄的描述,可以用該字段來指定其他字段,也可以使用 name_get() 方法做為描述。 |
| _table | 模型在后臺存儲的表名,在默認情況下odoo會將 _name 中的 . 替換為 _ 作為表名,通過該字 段可以指定。 |
| _inherit、_inherits | 用于繼承 |
2.4 模型類字段的屬性參數
| string? | unicode | 用戶界面中(對用戶可見)的字段標簽 | 字段名 |
| size | Int | 允許字符串的長度 | 長度不限制 |
| required? | bool | 若為?True,該字段不能為空,必須要么帶有默認值,要么保持在創建記錄時給定值。長形,在用戶界面中向用戶提供提示信息。 | False |
| help? | unicode | 幫助,在用戶界面中向用戶提供提示信息。 | '' |
| index | bool | 請求 Odoo 對字段創建數據庫索引?。 | False |
| readonly | bool | 該字段是否為只讀 | False |
| copy? | bool | 復制記錄時是否應復制字段值 | True |
| default | 根據字段的類型 | 任何字段都可以被賦予一個默認值。在字段定義中,添加選項?default=X,是 Python 文字值(布爾值、整數、浮點數、字符串)或采用模型并返回值的函數 |
2.5 模型類創建好后,odoo默認創建一些字段
| 列名 | 解釋 | 類型 |
| id | 模型中對一條記錄的唯一標識符。 | ID |
| create_date | 記錄的創建日期。 | Datetime |
| create_uid | 創建記錄的用戶。 | Many2one |
| write_date | 記錄的最后修改日期。 | Datetime |
| write_uid | 最近修改記錄的用戶。 | Many2one |
2.6 初始模型類結合菜單查看效果
2.6.1 菜單的定義
菜單的位置以及在哪塊編寫,是在views文件夾下的views.xml中
?一個菜單的創建如下圖:.
<odoo><data><menuitem id="test_room" name="考場"/><menuitem id="test_room_manage" name="考場管理"parent="test_room" action="test_room_action"/></data> </odoo>- 使用menuitem定義菜單
- id為菜單的標識,被用來做層級關系
- parent :? ? 該二級菜單屬于哪個菜單,即為菜單的父級菜單
- action 點擊菜單執行的動作,action看2.3.1
2.6.2 action的定義(動作)
<odoo><data><record model="ir.actions.act_window" id="test_room_action"><field name="name">科目管理</field><field name="res_model">test.test_room</field><field name="view_mode">tree,form</field></record><menuitem id="test_room" name="考場"/><menuitem id="test_room_manage" name="考場管理"parent="test_room" action="test_room_action"/></data> </odoo>- action一定要寫在菜單的上邊,因為菜單里面的action屬性需要用到action。
- 是用record標簽包裹起來
- model :? ?代表著這條數據要存儲到數據庫的位置
? ? ? ? ? ? ? ? 值為:ir.actions.act_window(窗口動作表) - id:? ? 這個record的id,菜單可以調用,其必須在整個odoo應用中唯一
- name: 頁面操作區域的名稱
- res_model: 頁面使用的模型
- view_model:? 用來指定模型的視圖,如果沒有定義則使用默認的視圖類型,定義后只能使用定義的視圖類型。比如去掉form,就代表不能使用form視圖創建數據
- tree代表列表視圖、form代表表單視圖
2.6.3 查看創建的模塊和進行操作以及保存創建數據
菜單和action加上之后,要把模塊升級一下
然后查看效果,(不用管這個會議室,這是我之前創建的)
?
創建個新數據,對應兩個字段,就是模型類對應的兩個字段
?
也可以進行修改編輯
3.命名規范
3.1模型命名規范
- ?如果只有一個模型,則模型名稱應與模塊名稱相同。
- 如果模型較多,則可將多個模型根據業務邏輯分組,每組有一個主模型。
- 在定義模型的名稱時,使用名稱的單數形式,使用大駝峰的命名風格,并以‘Model’結尾。
- 模型文件名應以主模型的名稱來名稱(下劃線命名)。
3.2菜單命名規范
菜單的名稱使用 _menu , 或是子菜單用 _menu_ 如果菜單那與模型相關,那么就放到和模型相關的視圖文件中, _view.xml 如果是與模型沒有綁定關系的主菜單,可提取到 _menus.xml 文件
3.3視圖命名規范
主動作為 _action 。其它使用 _ 作為后綴,其中detail 為簡潔地解釋動作的小 寫字符串。僅用于多個動作對模型進行聲明時。
4.odoo修改后代碼不生效的問題
在后續開發中,如果出現代碼修改后不生效的情況,一定要注意以下幾點:
B站up主
單三er的個人空間_嗶哩嗶哩_Bilibilihttps://space.bilibili.com/419877109
總結
以上是生活随笔為你收集整理的2.odoo13的学习(odoo中的模型、模型类属性、字段属性等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.odoo13的学习(odoo中的xm
- 下一篇: 1.odoo13之跟着官网做项目/实例(