上一篇内容:如何快速创建odoo模块,使用脚手架快速创建自己的odoo应用app

前言

在上一个教程中,我们已经实现了对模块的创建,现在我们要对创建的模块添加内容,这个教程将教你如何在odoo菜单中创建自己的菜单

创建ORM模型

因为odoo在菜单到视图显示的都是数据的内容,如果没有模型类的支持,菜单也不能正常显示,所以我们为了实现功能,先简单做一个brands的品牌表

  • 进入models->models.py文件写入内容

    from odoo import models, fields, api
    
    class Brands(models.Model):
    """
    品牌数据表
    """
    # 数据库的名称,名称为fandx_brands,这里的点会在数据库中转换成_
    _name = "fandx.brands" # 定义一个char类型字段,string为描述信息,在view视图中会显示
    name = fields.Char(string="品牌名称")
  • 在Navicat中的展示

  • 这里会发现除了我们自己创建的name字段以外还有几个字段这里是继承了AbstractModel自动创建的,并且所有的表在创建的时候都会创建这几个字段,如果有需要可以继承这个模型进行创建

    • id字段:主键字段
    • create_uid字段:创建用户的uid
    • create_date字段:数据的创建时间
    • write_uid字段:上一次更新的用户uid
    • write_date字段:上一次更新的时间

创建菜单视图

  • 在views文件夹下创建menutem.xml文件

    <odoo>
    <menuitem name="FANDX仓库" id="fandx_stock.menu_root"/>
    <menuitem name="品牌管理" id="fandx_stock.menu_1" parent="fandx_stock.menu_root" action="brand_action"/>
    <menuitem name="型号管理" id="fandx_stock.menu_2" parent="fandx_stock.menu_root" action="brand_action"/>
    <menuitem name="SKU管理" id="fandx_stock.menu_3" parent="fandx_stock.menu_root" action="brand_action"/>
    </odoo>
    • menuitem标签:为创建菜单的标签
    • name属性:就是在菜单显示的内容
    • id属性:id标识,这里是唯一的即可
    • parent属性:父级,我们在下面定义parent就可以将下面3个子菜单定位在id为fandx_stock.menu_root的页面中了
    • action属性:动作,必须制定到对于的act_windows视图上,没有指定则页面不会显示这个菜单功能
  • 在views中创建brand.xml文件

    <odoo>
    <record id="brand_action" model="ir.actions.act_window">
    <field name="name">品牌管理</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">fandx.brands</field>
    <field name="view_mode">tree,form</field>
    </record>
    </odoo>
    • record标签:语法标准,必须要写在最外面
    • id属性:id标识,这里是唯一的即可
    • model属性:xml会继承IrActionsActWindow的动作模型,odoo会根据模型来渲染视图,我们每一个view都要设置一个基础的act_windows视图
    • field->name="name":定义页面的左上角显示内容
    • field->name="type":类型
    • field->name="res_model":act_windows对应渲染的模型,这里写上我们之前定义的fandx.brands模型即可
    • field->name="view_mode":需要渲染的类型,这里先定义tree视图和form视图
  • 在_manifest_.py中刚创建的两个视图

     # 加载的视图
    'data': [
    '....',
    'views/brand.xml',
    'views/menuitem.xml'
    ],
    • 这里要注意顺序,菜单视图一定要放在最后,act_windows视图放在菜单视图的上面
  • 这个时候你如果去应用中升级了自己的模块,你会发现并没有在左侧菜单中显示,因为我们没有对数据模型进行权限的配置,odoo会默认认为我们的用户没有读取的权限

  • 进入security->ir.model.access.csv文件中替换下面代码

    id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
    access_fandx_stock_fandx_brands,fandx_stock.fandx_brands,model_fandx_brands,base.group_user,1,1,1,1
    • id: 唯一标识,必须唯一
    • name: 描述名称,描述信息
    • model_id:id:model的id格式是 model_模型类名
    • group_id:id : group组的id,这里可以不填,或者写上自己的定义的用户组,以后的教程里会详细讲解group组的权限分配问题
    • perm_read:查看 1有权限,0无权限,下面的一样的
    • perm_write:修改
    • perm_create: 创建
    • perm_unlink: 删除
  • 然后在data中打开对应的权限文件的屏蔽

      # 加载的视图
    'data': [
    'security/ir.model.access.csv',
    'views/brand.xml',
    'views/menuitem.xml'
    ],
  • 进入应用找到自己的模块去升级

  • 大功告成

如何快速在odoo中创建自己的菜单的更多相关文章

  1. Odoo中创建模块语句

    使用odoo的odoo-bin命令创建模块,比较方便. 进入终端界面(windows中可以是cmd中,linux中可以是$命令提示符下),以下在Windows中为例: python odoo-bin ...

  2. odoo 动态创建字段的方法

    动态创建字段并非一个常见的的需求,但某些情况下,我们确实又需要动态地创建字段. Odoo 中创建字段的方法有两种,一种是通过python文件class中进行定义,另一种是在界面上手工创建,odoo通过 ...

  3. odoo中def init(self):

    # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. f ...

  4. (3)Maven快速入门_3在Eclipse中创建Maven项目打包成jar

    Eclipse中创建Maven项目 new ---> maven project  ----> next 如下 普通java项目 选择  如下 quickstart 创建项目 : 输入 G ...

  5. 第一章 使用开发者模式快速入门 Odoo 12

    本文为最好用的免费ERP系统Odoo 12开发手册系列文章第一篇. Odoo提供了一个快速应用开发框架,非常适合创建商业应用.这类应用通常用于保留业务记录,增删改查操作.Odoo 不仅简化了这类应用的 ...

  6. 如何快速搭建自己的ERP系统,4步源码快速安装odoo教程

    上一篇内容:了解什么是Odoo,为二次开发做准备 1.下载odoo源码 Github地址:https://github.com/odoo/odoo Gitee地址:https://gitee.com/ ...

  7. SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...

  8. 《HiWind企业快速开发框架实战》(3)使用HiWind创建和管理菜单

    <HiWind企业快速开发框架实战>(3)使用HiWind创建和管理菜单 关于HiWind HiWind企业快速开发框架,是基于.NET+EasyUi(支持各种前端扩展,后面将扩展Boot ...

  9. php中创建和调用webservice接口示例

    php中创建和调用webservice接口示例   这篇文章主要介绍了php中创建和调用webservice接口示例,包括webservice基本知识.webservice服务端例子.webservi ...

随机推荐

  1. PAUL ADAMS ARCHITECT :阿联酋和美国富人推动英国高端房地产市场

    来自2020年前三季度的数据显示,在英国高端市场上,由国际买家担保的抵押贷款交易数量最多,阿联酋目前处于领先地位.到目前为止,在2020年完成的所有交易中,有35%来自阿联酋. PAUL ADAMS ...

  2. DeFi下半场,除了YFI,还有BGV!

    自今年夏季开始,DeFi市场便已经进入火热态势,且持续至今.其中,去中心化交易所(DEX)以及各种金融衍生品的出现,吸引了大批资金的进入,资本市场的目光已从传统金融移到了DeFi市场,期望着能够从De ...

  3. restful风格的理解

    简而言之,就是不同的命令响应不同的操作: 关注点在url中的不同参数,是因为不同的参数才使得不同的method去对应的不同的操作.

  4. 配置mysql数据库时出再错误:LookupError: No installed app with label 'admin'.

    版本: windows10+py37+django2.2 错误: 项目启动时出现,No installed app with label 'admin' 解决办法: 安装最新的 pip install ...

  5. 使用 Tye 辅助开发 k8s 应用竟如此简单(六)

    续上篇,这篇我们来进一步探索 Tye 更多的使用方法.本篇我们将进一步研究 Tye 与分布式应用程序运行时 Dapr 如何碰撞出更精彩的火花. Newbe.Claptrap 是一个用于轻松应对并发问题 ...

  6. 第七届蓝桥杯JavaB组——第7题剪邮票

    题目: 剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示 ...

  7. JAVA基础(二)—— 常用的类与方法

    JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...

  8. gRPC-go源码(2):ClientConn

    摘要 在上一篇文章中,我们聊了聊gRPC是怎么管理一条从Client到Server的连接的. 我们聊到了gRPC拥有Resolver,用来解析地址:拥有Balancer,用来做负载均衡. 在这一篇文章 ...

  9. PHP代码审计_用==与===的区别

    目录 背景介绍 如何审计 绕过案例1 绕过案例2 背景介绍 比较==与===的差别 == 是等于符号,=== 是恒等于符号,两个符号的功能都是用来比较两个变量是否相等的,只不过两个符号的比较维度不一样 ...

  10. tibco EMS 8.2.0安装

    安装环境 序号 项目 值 1 OS版本 Red Hat Enterprise Linux Server release 7.1 (Maipo) 2 内核版本 3.10.0-229.el7.x86_64 ...