• Odoo Shell


    Odoo shell 提供了一个简便的操作 Odoo的交互界面, odoo 9.0 开始就是标准功能, 无需安装第三方应用。

       

    本文基于Odoo10 说明 Odoo Shell以及 Odoo ModelClass Modelmodelrecordset 之间的关系 [注意:大小写是有特殊含义]

       

    Odoo Shell 通过在 cli/command.py#commands{} 注册 Shell command 来实现的。

    首先,Odoo支持的 command 都是基于 command 基类,而 command 基类 则通过 它的 元类 初始化的时候, commands{} 注册支持的 command.

       

       

       

    Shell command.

       

       

    而从 Odoo 10 开始, Shell 支持 多种 终端,通过参数shell-interface 传递给Odoo shell,支持以下终端类型

    1. ipython
    2. ptpython
    3. bpython
    4. python,如果不指定,则使用Python

       

    运行 Odoo shell

    执行 命令 python odoo-bin shell -c .. .conf --shell-interface ipython

    ipython 交互界面 运行 Odoo shell. 启动之后

    出现 ipython 终端提示符

       

    Odoo shell启动之后,只提供了 以下几个变量

    变量

    类型

    env

    odoo.api.Environment 对象

    odoo

    odoo 模块

    openerp

    odoo 模块

    self

    res.users(1,) 记录

      

      

       

    registry Odoo实例维护的信息中心,可以通过 env.registry 获取

       

    通过 env.registry.models 可以 获取当前 Odoo实例 的模型列表, 它返回的结果是,ModelClass Model 字典键值对,例如

       

    查看下 常用的 模型,例如 product.product

    product.product ModelClass ; odoo.api.product.product 则是 Model

       

       

    也可以通过 env['product.product'] 获取 Model

    而这个 Model 本身就是 odoo.api.product.product

       

    再开看看 odoo.api.product.product 的基类

       

    从注册表 获取 odoo.api.product.product 对应的 Model Class 发现 product.product 是在所有 定义/扩展过 product.product 模型的 模型基础上 再组装出来的。

     

       

    Odoo Shell 操作 Odoo 记录

       

    查询产品

    env['product.product'].search([])

       

       

    遍历查看产品的名称

    for prod in env['product.product'].search([]):

    print prod.name

       

       

    修改产品的属性

       

    例如修改 id = 1 产品的名称

       

    只要能取得模型,模型的一切方法都能调用, 标准的方法

    方法

    必要参数

    选参

    search

    domain

      

    search_count

    domain

      

    search_read

    domain

      

    browse

      

      

    copy

      

      

    copy_data

      

      

    create

      

      

    default_get

      

      

    name_get

      

      

    read

      

      

    read_group

      

      

    unlink

      

      

    write

      

      

    update

    vals 字典

      

       

    提示

    Odoo 的模型其实是 转包过一次的,并不是 product.product,而是 odoo.api.product.product 而且 Model 通过 Model Class 来进行实例化出来的。

    严格意义上来讲,在写Odoo 模型Model 时,其实是在 Model Class 的父类, 最终这些 父类会 汇总 派生出 Model Class,进而实例化为 model,而recordset 也是 Model Class 衍生出来的

  • 相关阅读:
    [MySql]insert...select 8/10
    秀出Administrator帳戶6/27
    Love
    讀取Gridview的隱藏欄8/22
    水晶報表公式換行8/2
    MySql.Data.MySqlClient.MySqlException 7/9
    mysql的錯誤日誌爆满7/24
    从汇编看c++中的const常量
    可见性和生命期的区别
    比较烦
  • 原文地址:https://www.cnblogs.com/odoouse/p/5995418.html
Copyright © 2020-2023  润新知