odoo模块搭建及开发

以下操作均在windows环境下
版本:odoo11

一.模块搭建

python odoo-bin scaffold 模块名 模块所在的文件名
python odoo-bin scaffold demo my-modules
看下图就搭建好了一个模块,但这个模块在系统应用中还没法看到的
下面讲一下模块组织结构:

  1. controllers
    需要自定义路由在该文件里面配置
  2. models
    在该文件里面创建模型,就是我们数据库字段,以及处理逻辑交互
  3. security
    配置权限
  4. views
    在这个文件写前端视图页面
  5. manifest.py
    在这个文件里配置模型名,配置模型依赖,以及前端xml文件都要配置到这个文件
    在这里插入图片描述
    接下来我们需要到odoo.conf文件里配置addons_path如下图,(odoo.conf在debian文件里面)
    在这里插入图片描述
    现在到系统里面激活开发者模式,在应用中更行模块,再搜索模块名就可以看到我们搭建的模块啦,点击安装但页面上什么都不显示,不要着急这是因为还没有开发,模块里面目前没有任何内容
    在这里插入图片描述

二.开发

首先在models文件夹下创建一个demo.py,把demo.py引入同目录下的_init_.py里面,回到demo.py建一个数据模型demo,
_name: 模型名,其他模型需要调用某个模型时需要用到
_inherit :继承,继承某个模型的字段
设置字段使用fields:
1.字段基本类型:
char: 字符
Boolean: 布尔 b = fields.Boolean(string=“布尔”,require=True)
Integer: 整型 i = fields.Integer()
Float: 浮点 f = fields.Float()
Selection: 下拉选择 s = fields.Selection()
Date: 日期 YY-DD-MM d = fields.Date()
Datetime: 时间 YY-DD-MM hh: mm: ss
Html: 富文本编辑
Text: 文本
Binary: 上传保存图片、视频、文件、附件等,Odoo底层对该类型字段的容量作了限制,最多能容纳20M内容
2.关联字段类型
many2one: 多对一,关联对象的name user_id= fields.many2one(‘模型名’,string=“标签名”,domian=[()], )
one2many: 一对多
many2many: 多对多

demo.py
# -*- coding: utf-8 -*-

from odoo import models, fields, api

class demo(models.Model):
    _name="my.demo"

    name = fields.Char(string="姓名")
    value= fields.Integer(string="值")

xml中视图创建(xml一定要引入__manifest__.py文件里面)

demo.xml
<odoo>
    <data>
        <!--odoo里面有三个视图分别为tree视图显示表格,search视图搜索,以及form视图表单,详情展示-->
        <!--每个视图的id必须以模块名作为开头否则报错-->
        <!--tree视图-->
        <record model="ir.ui.view" id="demo.list_demo">
          <field name="name">demo list</field><!--这个可以随便填但不可以太长否则也会报错-->
          <field name="model">my.demo</field><!--demo.py里面设置的模型名_name-->
          <field name="arch" type="xml">
            <tree>
              <field name="name"/>
              <field name="value"/>
            </tree>
          </field>
        </record>

        <!--自定义的form视图,可以根据自己需要添加字段,或布局,如果不写系统会使用模型中的字段自动建立一个from视图-->
        <record id="demo_form_view" model="ir.ui.view">
            <field name="name">my.demo.form</field>
            <field name="model">my.demo</field>
            <field name="arch" type="xml">
                <form string="新建">
                    <sheet>
                      <group>
                          <field name="name"/>
                      </group>
                      <notebook>
                          <page string="page1">
                          </page>
                          <page string="page2">
                          </page>
                      </notebook>
                    </sheet>
                </form>
            </field>
        </record>

        <!--search视图-->
        <record model="ir.ui.view" id="demo_note_search">
          <field name="name">查询</field>
          <field name="model">my.demo</field>
          <field name="arch" type="xml">
            <search string="查询">
              <!-- 可搜索的内容 -->
              <field name="name"/>
            </search>
          </field>
        </record>

        <!--页面动作各种视图切换在这里可以设置上下文context在里面可以做编辑创建导入按钮的隐藏,页面数据查询也是在这里-->
        <record model="ir.actions.act_window" id="demo_action_contract">
          <field name="name">类似面包屑显示</field>
          <field name="res_model">my.demo</field>
          <field name="view_type">form</field>
          <field name="view_mode">form,tree</field>
          <field name="domain">[('name', '=', '张三')]</field><!--在my.demo的数据模型中过滤出name为张三的数据-->
          <!--指定视图,有时候会遇到同一个模型要显示不同字段的情况,比较复杂的时候可以写多个视图在这儿来指定-->
          <field name="view_ids" eval="[(5, 0, 0),
            (0, 0, {'view_mode': 'tree', 'view_id': ref('demo.list_demo')}),
            (0, 0, {'view_mode': 'form', 'view_id': ref('demo_form_view')}),
            (0, 0, {'view_mode': 'kanban'})]"/>
        <field name="help" type="html">  <!--在没有数据的情况下显示的提示文案-->
            <p class="oe_view_nocontent_create">
                点击创建申请
            </p>
        </field>
        </record>



        <!--菜单导航设置-->
        <menuitem name="demo" id="demo.menu_root"/> <!--显示在页面的顶部,后面的子菜单显示在侧边栏-->
        <menuitem name="一级菜单" parent="demo.menu_root" id="demo.menu_first"/> <!--每一级菜单关联使用parent属性值为上一级菜单的id-->
        <menuitem name="一级子菜单" parent="demo.menu_first" id="demo.menu_first_child" action="demo_action_contract"/><!--action关联该菜单栏对应的动作视图-->
    </data>
</odoo>

页面效果展示
tree和search视图
在这里插入图片描述
form视图
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 ERP 简介 1 1.1 Odoo 历史 1 1.2 ERPⅡ 或商业智能化 2 1.2.1 什么是商业智能 4 2 Odoo 框架简介 7 2.1 python 模块分析 8 2.2 python2 还是 python3 8 3 Odoo 的安装和配置 9 3.1 PostgreSQL 数据库 10 3.2 Ubuntu14.04 下可能缺失的软件包 11 3.3 网页显示 node.js 方面 11 3.4 其他问题 12 3.5 通过命令行运行时的配置 12 3.5.1 –xmlrpc-port=8888 12 3.5.2 –addons-path=addons 12 3.5.3 数据库的一些配置 13 3.5.4 –save 13 3.6 将安装环境封装起来 13 3.7 文档编译 14 4 初入 Odoo 17 4.1 管理数据库 17 4.2 登录界面 18 4.3 Administrator 首选项 19 4.4 导入一个翻译 20 4.5 新的 Demo 用户 20 4.6 模块管理 21 4.7 修改公司信息 21 4.8 打开技术特性支持之后 22 4.9 进销存和财务系统的抽象讨论 22 4.9.1 以采购部门为例 23 4.10 安装和配置模块 24 5 创建自己的模块 27 5.1 快速生成模块骨架 27 5.1.1 python 模块的 init 文件 28 5.1.2 作为 Odoo 模块的说明文件 29 5.2 安装自定义模块 32 5.2.1 模块文件夹管理 32 5.3 一个简单的演示模块 33 5.3.1 controllers 33 5.3.2 views 33 5.3.3 models 35 5.3.4 security 37 5.3.5 美化网页 38 5.4 加分项: 通过 pgadmin3 来查看数据库 39 5.4.1 安装 39 5.4.2 连接服务器 39 5.4.3 图形化查询 40 6 Odoo 开发基础: 请假模块第一谈 43 6.1 纯理论讨论 43 6.2 定义模型 45 6.3 加入菜单 46 6.3.1 act_window 的属性 48 6.3.2 menuitem 的属性 48 6.4 视图优化 48 6.4.1 修改 tree 视图 49 6.4.2 修改 form 视图 49 6.5 完整的 views.xml 51 6.6 给模块加个图标 53 7 Odoo 开发基础: 工作计划模块第一谈 55 7.1 数据访问权限管理 61 7.1.1 access rule 62 7.1.2 record rule 62 8 扩展现有模块-继承机制 65 8.1 给模块增加 field 65 8.2 修改已有的 field 66 8.3 重载原模型的方法 66 8.3.1 什么是 Recordset 67 8.3.2 Odoo 里面的 domain 语法 68 8.3.3 recordset 的 search 方法 69 8.4 视图 xml 文件的继承式修改 70 8.4.1 视图元素添加 71 8.4.2 原视图元素属性修改 71 8.5 多态继承 72 8.6 修改其他数据文件 73 8.6.1 删除记录 73 8.6.2 更新数据 73 8.7 委托继承 74 9 理解模型内的数据文件 75 9.1 理解外部 id 75 9.2 使用外部 id 77 9.3 导出或导入数据文件 77 9.4 快捷输入标签 78 9.5 用 field 标签设置值 78 9.5.1 eval 语法 78 9.5.2 ref 属性 79 9.5.3 One2many 和 Many2many 的 eval 赋值 79 10 Odoo 开发基础: 请假模块第二谈 81 10.1 本例涉及到的数据库表格简介 89 10.2 工作流概念入门 89 10.2.1 定义工作流对象 90 10.2.2 创建节点 91 10.2.3 创建连接 91 11 Odoo 模型层详解 93 11.1 _name 93 11.2 各个表头属性 93 11.3 name 字段 94 11.4 具体模型的数据 94 11.5 模型间的关系 95 11.6 工作流 95 12 Odoo 视图层详解 97 13 附录 99 13.1 Odoo 里老的 API 99 13.2 PostgreSQL 数据库命令行操作 99 13.2.1 命令行数据库备份 99 13.3 反向代理 (reverse proxy) 99 13.3.1 安装 ngnix 软件 100 13.3.2 强制 https 连接 102 13.3.3 nginx 优化 102 13.3.4 轮询机制 102 13.4 跟踪项目源码初始化进程 102 13.4.1 base 模块 104 13.4.2 web 模块 105 13.4.3 web_kanban 模块 105 13.5 配置会计科目 105 13.5.1 配置会计科目类型 105 13.5.2 配置会计科目 106 13.6 分录 106 13.7 新建业务伙伴 106 13.7.1 新建业务伙伴标签 106 13.7.2 新建客户 106 13.8 创建新的产品 107 13.9 设置会计年度 107 13.10向供应商下单 107 13.11会计学入门 107 13.11.1财务报表 108 13.11.2原始凭证 108 13.11.3账户 108 13.11.4分类帐 109 13.11.5会计科目表 109 13.11.6报告期间 110 13.12参考资料 110

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值