zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    什么是Sentinel?它能做什么
    【转】Sentinel 快速入门
    Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 解决
    【转】接口幂等性设计
    springboot1.5版本
    测试左移实践和总结
    测试左移和右移
    Linux-018-Centos Shell 判断软件是否已经安装
    PySe-018-Requests 解决响应乱码
    PySe-017-Requests 访问 HTTPS 网站安全告警信息(TLS Warnings / InsecureRequestWarning)处理
  • 原文地址:https://www.cnblogs.com/odoo14/p/12952854.html
Copyright © 2011-2022 走看看