日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2.odoo13的学习(odoo中的模型、模型类属性、字段属性等)

發布時間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_nameodoo默認使用name字段,作為數據記錄的描述,可以用該字段來指定其他字段,也可以使用 name_get() 方法做為描述。
_table模型在后臺存儲的表名,在默認情況下odoo會將 _name 中的 . 替換為 _ 作為表名,通過該字 段可以指定。
_inherit、_inherits用于繼承
_order:? 例如: _order = 'create_date desc'? ? ?解釋:按照創建時間倒序排列

2.4 模型類字段的屬性參數

屬性參數類型解釋默認值
string?unicode用戶界面中(對用戶可見)的字段標簽字段名
sizeInt允許字符串的長度長度不限制
required?bool若為?True,該字段不能為空,必須要么帶有默認值,要么保持在創建記錄時給定值。長形,在用戶界面中向用戶提供提示信息。False
help?unicode幫助,在用戶界面中向用戶提供提示信息。''
indexbool請求 Odoo 對字段創建數據庫索引?。False
readonlybool該字段是否為只讀False
copy?bool復制記錄時是否應復制字段值True
default根據字段的類型任何字段都可以被賦予一個默認值。在字段定義中,添加選項?default=X,是 Python 文字值(布爾值、整數、浮點數、字符串)或采用模型并返回值的函數
可以使用自定義的函數,設置值, 裝飾器api.model class estate_property(models.Model):_name = 'estate.property'_description = '不動產模型類'name = fields.Char(required=True, string='名稱') # 名稱description = fields.Text(string='描述') # 描述postcode = fields.Char(string='郵政編碼') # 郵政編碼@api.modeldef _get_time(self):return datetime.now() + relativedelta(months=3)# date_availability = fields.Date(string='可用日期', copy=False, default=datetime.now() + relativedelta(months=3)) # 可用日期date_availability = fields.Date(string='可用日期', copy=False, default=_get_time) # 可用日期

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修改后代碼不生效的問題

在后續開發中,如果出現代碼修改后不生效的情況,一定要注意以下幾點:

  • 有沒有重啟pycharm
  • pycharm過期自動退出后,有沒有在任務管理器中結束python進程 是否重啟了項目
  • 如果不生效的代碼為model或者view,那么有沒有在model的 __init__.py 或者 __manifest__.py 文件中引用
  • 如果報錯時,提示某個內容不存在,那么應檢查文件的引入順序
  • B站up主

    單三er的個人空間_嗶哩嗶哩_Bilibilihttps://space.bilibili.com/419877109

    總結

    以上是生活随笔為你收集整理的2.odoo13的学习(odoo中的模型、模型类属性、字段属性等)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。