Odoo模塊開發教程3-模塊繼承之修改視圖和數據第五講

使用 mixin 類繼承模型

原型繼承主要用於支持 mixin 類。 mixin 是基於 models.Abstract 的抽象的模型(而不是
models.Model),它在數據庫中沒有實際的體現,而是提供功能供其它模型複用(混合 mixed in)。 Odoo 插件提供多種 mixin,最常的兩種由 Discuss 應用(mail 模塊)提供:
⚫ mail.thread 提供在許多文檔表單下方或右側的消息面板功能,以及消息和通知相關邏輯。
這在我們自己的模型中將經常會添加,下面就來一起學習下。
⚫ mail.activity.mixin 模型提供待辦任務計劃。
“ 注意: Odoo 11 的修改
mail 模塊現在通過 mail.activity.mixin 抽象模型提供 Activities 任務管理功能。該功能在 Odoo
11 中才添加,此前的版本中沒有。 ”
我們一起來爲 Member 模型添加上述兩種 mixin。社交消息功能由 mail 模塊的 mail.thread
模型提供,要將其加入自定義模型,應進行如下操作:
⚫ 通過 mixin 模型 mail 爲插件模塊添加依賴
⚫ 讓類繼承 mail.thread 和 mail.activity.mixin 兩個 mixin 類
⚫ 將 message_follower_ids, message_ids 和 activity_id 這些 mixin 的數據字段添加到表
單視圖
對於第一步擴展模型需要在__manifest__.py 文件中添加對 mail 的依賴。
'depends': ['library_app', 'mail'],
第二步中對 mixin 類的繼承通過_inherit 屬性完成,應編輯library_member/models/library_member.py 並添加如下代碼:
class Member(models.Model):
_name = 'library.member'
_description = 'Library Member'
_inherit = ['mail.thread', 'mail.activity.mixin']
...
通過添加額外的這行代碼,我們的模型就會包含這些 mixin 的所有字段和方法。
第三步中向表單視圖添加相關字段,編輯 library_member/views/member_view.xml 文件並在表單最後添加如下代碼:

<odoo>
...
<form>
...
<!-- mail mixin fields -->
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"
/>
<field name="activity_ids" widget="mail_activity" />
<field name="message_ids" widget="mail_thread" />
</div>
</form>

mail 模塊還爲這些字段提供了一些特定的網頁組件,以上代碼中已使用到。在升級模塊後會員
表單將變成這樣:
有時普通用戶僅能訪問正在 follow 的記錄。在這些情況下我們應添加訪問記錄規則來讓用戶可以看到 follow 的記錄。本例中用不到這一功能,但可通過[(‘message_partner_ids’ , ‘in’ ,[user.partner_id.id])]或來進行添加。

更多教程:https://www.erpdaxue.cn/odoo/odoo-teach/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章