zoukankan      html  css  js  c++  java
  • Odoo中的模型详解

     转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826118.html

      【Odoo中,一切皆模型,连视图都是模型。Odoo将各种数据,如:权限数据、类数据、视图数据等,按照模型分表存储,然后在查看时,按照索引从各个表格读取信息,组合成我们看到的内容。】

    一:模型的属性

        模型内置属性:可以使用一些内置属性来定义模型的一些特性:

        _name :创建odoo模型的内部标识符,必含项。

        _description :当用户界面显示模型时,一个方便用户的模型记录标题。

        _order :当浏览模型记录或者显示在列表视图时,设置默认顺序。

        _rec_name:用来指出引用关联字描述记录的字段,例如多对一关系。 默认情况下,它使用name字段,这是模型中常见的字段。但是这个属性允许我们使用任何其他字段来实现这个目的。【不过我们一般使用_name_get()函数来重写name字段的获取逻辑,手动拼装在关联字段显示出的描述性名称。】

       _table:用来支持模型的数据库表名。通常,它是左自动计算,是下划线取代点的模型名称,但也可以设置特定的表名。

        _inherit :继承。

        _inherits :委托继承。

    二:模型对象的获取

        Odoo模型被保存在一个中央注册中心,它可以引用实例中可用的所有模型类,并且它可以被一个模型名引用。在我们编写的模型方法代码中,可以通过 self.env['x'] 获取一个代表model x的类的引用。(相当于spring托管对象)

        模型名称很重要,因为它们是用于访问注册中心的。模型名称的约定规则:用点分隔的小写字母列表。

        模型名称必须是全局唯一的,通常与模块名相关。

    三:Odoo中的三种模型

        1:基本模型models.Model

          绝大多数Odoo模型中,类都是基于models.Model类的。 这种类型的模型具有永久的数据库持久性:为它们创建数据库表,并且它们的记录被存储,直到被显式删除。

        2:瞬态模型models.TransientModel

          通常用于向导。 它们的数据仍然存储在数据库中,但是临时的,一个清理作业定期从这些表中清除旧数据。

     

       3:抽象模型models.AbstractModel

         不存储数据,不会在数据库创建表。 抽象模型作为可重用的功能集,利用Odoo的继承功能,混入到其他模型。通常用于定义接口或者用作报表模型。


    四:模型之间的关系

        命名字段时,有以下约定:以_id、_ids为结尾命名的字段,分别对应的是2one和2many的关系。

  • 相关阅读:
    h5手机端禁止缩放问题
    element upload 一次性上传多张图片(包含自定义上传不走action)
    vue开发移动端项目 过渡动画问题
    vue中使用transition标签底部导航闪烁问题
    vue element upload图片 转换成base64
    vue项目 sockjs-node一直报错问题
    获得省市区 二级 三级 四级 五级联动数据地址
    vue项目中引入第三方框架
    element中使用button会刷新一遍页面
    [Java] 字符流 Writer,输出字符数据PrintWriter
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10826118.html
Copyright © 2011-2022 走看看