宜兴通达竭诚为您服务。

通达科技 - 宜兴电脑维护及IT服务外包服务商

ODOO12图书项目原模型继承
  • 上传者: Administrator
  • 上传时间:2022年11月14日 02时36分27秒
  • 资源大小:10M
  • 下载点数:免费
资料简介 相关下载 请喝咖啡

    学习项目-继承图书馆应用
    在前面我们创建了一个图书应用的初始模块,可供查看图书目录。现在我们要创建一个library_member模块,来对图书应用进行扩展以让图书会员可以借书。它继承 Book 模型,并添加一个图书是否可借的标记。该信息将在图书表单和图书目录页显示。
    应添加图书会员主数据模型Member,类似 Partner 来存储个人数据,如姓名、地址和 email,还有一些特殊字段,如图书会员卡号。最有效的方案是代理继承,自动创建图书会员记录并包含关联 Partner 记录。该方案使得所有的Partner 字段在 Member 中可用,没有任何数据结构上的重复。
    我们还要在借书表单中为会员提供消息和社交功能,包括计划活动组件来实现更好地协作。我们还要添加会员从图书馆中借书的功能,但暂不涉及。以下是当前所要修改内容的总结:

    1. 图书
      添加一个Is Available? 字段。现在通过手动管理,以后会自动化
      扩展 ISBN 验证逻辑来同时支持10位数的ISBN
      扩展图书目录页来分辨不可借阅图书并允许用户过滤出可借图书
    2. 会员
      添加一个新模型来存储姓名、卡号和 Email、地址一类的联系信息添加社交讨论和计划活动功能

    首先在library_app同级目录创建一个library_member目录来作为扩展模块,并在其中添加两个文件,一个__init__.py空文件和一个包含如下内容的__manifest__.py文件:

    {
    'name': 'Library Members',
    'description': 'Manage people who will be able to borrow books.',
    'author': 'Daniel Reis',
    'depends': ['library_app'],
    'application': False,
    }
    

    ODOO12图书项目原模型继承
    第一步我们来为Book模型添加is_available布尔型字段。这里使用经典的 in-place 模型继承。该字段值可通过图书借出和归还记录自动计算,但现在我们先使用普通字段。要继承已有模型,需要在 Python 类中添加一个_inherit 属性来标明所继承的模型。新类继承父 Odoo 模型的所有功能,仅需在其中声明要做的修改。在任何地方使用该模型修改都可用,可以认为这类继承是对已有模型的引用并在原处做了一些修改。
    为模型添加字段
    通过 Python 类来新建模型,继承模型同样是通过 Python 以及 Odoo 自有的继承机制,即_inherit 类属性。该属性标明所继承的模型。新的类继承父 Odoo 模型的所有功能,仅需声明要做修改的部分。编码指南推荐为每个模型创建一个 Python 文件,因此我们添加library_member/models/library_book.py文件来继承原模型,首先创建__init__.py文件来导入该文件:

    1、添加library_member/init.py文件来导入 models 子文件夹

    from . import models
    

    2、添加library_member/models/init.py文件子文件夹中的代码文件:

    from . import library_book
    

    3、创建library_member/models/library_book.py文件来继承library.book模型:

    from odoo import fields, models
    
    
    class Book(models.Model):
        _inherit = 'library.book'
        is_available = fields.Boolean('Is Available?')
    

    使用_inherit类属性来声明所继承模型。注意我们并没有使用到其它类属性,甚至是_name 也没使用。除非想要做出修改,否则不需要使用这些属性。
    可以把这个想成是对模型定义的一个引用,在原处做了一个修改。可以添加字段、修改已有字段、修改模型类属性甚至是包含业务逻辑的方法。要在数据表中添加新的模型字段需要安装该模块。
    刷新本地模块后,即可找到我们刚创建的模块,然后点击安装
    在这里插入图片描述
    如果一切顺利,通过设置>技术>数据库结构>模型菜单查看library.book模型即可看到该字段。
    在这里插入图片描述
    修改已有字段
    通过上面部分可以看到向已有模型添加新字段非常简单。有时还要对已有字段进行修改,也非常简单。在继承模型时,可对已有字段叠加修改,也就是说仅需定义要增加或修改的字段属性。
    我们将对原来创建的library_app模块的 Book模型做两处简单修改:

    • 为isbn字段添加一条提示,说明同时支持10位数的 ISBN(稍后会实现该功能)
    • 为publisher_id字段添加数据库索引,以提升搜索效率

    编辑library_member/models/library_book.py文件,并在library.book 模型中添加如下代码:

    isbn = fields.Char(help="Use a valid ISBN-13 or ISBN-10.")
    publisher_id = fields.Many2one(index=True)
    

    这会对字段进行指定属性修改,未涉及的属性不会被修改。升级模块,进入图书表单,将鼠标悬停在 ISBN 字段上,就可以看到所添加的提示信息了。
    在这里插入图片描述
    index=True这一修改不太容易发现,通过设置>技术>数据结构>模型菜单下的字段定义中可进行查看。
    在这里插入图片描述


    本资料从网上收集,如有侵权请联系tderp@tderp.com删除
  • 微信

服务原则及地区范围

宜兴通达网络科技有限公司,地处中国宜兴环科园内,是一家高新技术企业。公司在企业网络维护和企业信息化建设与咨询方面,有10多年经验。

我公司愿与客户一道,力求彻底解决客户问题!
我们不是在给企业提供“头痛医头、脚痛医脚”的暂时解决方案,而是在部署根本性安全与稳定服务!!
我们愿携手客户,建立企业IT规划;杜绝随意安装系统、软件等操作;力求共同维护有序、安全、稳定的网络办公环境!!!
IT服务,服务是根本,客户是上帝;我们提供快速响应、快速上门、快速排查,提供优质高效的服务!!!!

通达科技提供全国范围内的服务,服务形式包括远程协助、电话咨询、电子邮件咨询、传真咨询、问答平台的问题解决等。

宜兴地区提供上门服务:

  • 市区服务:宜城街道、城北街道(屺亭街道)、新街街道、新庄街道、环科园、渚桥开发区
  • 市郊服务:张渚镇、西渚镇、太华镇、徐舍镇、官林镇、杨巷镇、新建镇、和桥镇、高塍镇、万石镇、周铁镇、芳桥镇、丁蜀镇、湖父镇。
  • 联系电话:189-21-343434
  • 在线沟通: