odoo新手创建模块(一)--简单搭建

一.创建模块

PyCharm 自带脚手架功能,我们只需要在终端,写入如下代码,系统便可为我们快速生成一个模块.填入相应的模块名与所在目录,即可:

python odoo-bin scaffold  模块名 目录

示例如下:
终端脚手架代码
回车后,我们将会在 TEST目录下,创建一个 my_cats 模块,及其配套的文件夹,如下:
my_ctas目录结构
通常来说,odoo模块目录下,基本有如下几个文件夹(砖厂管理员的"ODOO13 开发教程附 模块目录结构"有详细描述):

  • models:具体的模型,里面定义了类与方法,生成了数据库及其所需的字段
  • security:安全文件夹,管理odoo模型的增删改查权限
  • views:视图文件夹,用于前端的显示
  • init.py:用来导入文件夹
  • manifest.py:记录模块的主信息

odoo下每个模块都遵循MVC的设计模式,其中demosecurity文件夹分别用于演示数据和安全控制文件的存放,modelscontrollers下面是python文件,views下是XML文件,用于配置视图.

二.编辑manifest.py

首先打开manifest.py,进行编辑(详情砖厂管理员的"ODOO13 开发教程附 manifest 清单文件常用参数"):

# -*- coding: utf-8 -*-
{
	#该模块名
    'name': "猫猫管理系统2.0",
	#该模块的简介
    'summary': """
        猫猫管理系统的更新版本
        """,

	#对当前模块的描述
    'description': """
        猫猫管理系统:
        下载你就知道啦
    """,
	#作者
    'author': "不爱学习的小白",
    #可以填写本模块相关的网址
    'website': "www..com",
    #默认为Uncategorized.可选择已有的分类
    'category': 'Uncategorized',
    #模块的版本,默认0.1
    'version': '0.1',
    #默认base,可以在后面继续添加依赖的其他模块,当本模块被安装时,会自动安装此处的依赖
    'depends': ['base'],
    #模块所需要的依赖(所引用的文件),自己写的话,注意路径,写法及顺序
    'data': [
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
    ],
    #用于演示的数据,如果选择了加载演示数据,则此部分配置会起作用
    'demo': [
        'demo/demo.xml',
    ],
    #是否可安装(设置为False则前端无法搜索到)
    'installable': True,
    #是否自动安装(在depends参数的模块都安装完成之后,自动安装本模块)
    'auto_install': True,
}

三.创建模型

我们在models文件夹下,创建My_Cats_HomePage.py文件:
创建模型文件
我们发现,脚手架为我们创建好了一个models.py我们可以将其中的代码拿过来套用.如下:

# -*- coding: utf-8 -*-#第一行告知python编辑器本文件为utf-8编码,在所有odoo模型内的第一行,最好都加上

from odoo import models, fields, api#后续继承使用,或者直接调用时使用的api

class My_Cats_HomePage(models.Model):
    _name = 'my.cats'#类的唯一标识字段,
    #其他类可以通过此字段引用本类,不能使用大写,
    #在模块安装升级之后,会在数据库生成my_cats的数据表
    
    _description = 'My Cats HomePage'#类似于标签,提高查询

    name = fields.Char(string="猫猫名称")#模型的字段
    code = fields.Char(string="猫猫编号")

四.init.py引用

models文件夹下的init.py里引用我们定义的模块

# -*- coding: utf-8 -*-
from . import models
from . import My_Cats_HomePage#from . import为固定写法,My_Cats_HomePage为引用的文件名

五.配置安全/权限文件夹security

security文件夹下,脚手架会自动创建ir.model.access.csv
ir.model.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_my_cats_Operator,my_cats_Operator,model_my_cats,base.group_user,1,1,1,1

第一行为固定写法(key),依次分别为:
该记录唯一表示(唯一性), 该记录名称(唯一性), 设置访问权限的模块, 授予权限安全组的ID, perm对应于读, 写, 新建, 删除 等操作设置.
第二行同样以逗号隔开,对应第一行key的值(view),依次命名规范为(将模型的点(.)替换为下划线(_):
access_+模块名+角色名, 模块名+角色名, model+模块名, 其余四项值1为true,0为false(是否有对应的操作权限)

可以将这两行代码理解为:

idnamemodel_id:idroup_id:idperm_readperm_writeperm_createperm_unlink
access_my_cats_Operatormy_cats_Operatormodel_my_catsbase.group_user1111

写法规范参照于砖厂管理员ODOO13 开发教程三 开始你的第一个模块内容不再赘述,可以自行查看.也可于odoo初学者代码总结–init/security(2)中查找对应的说明

六.manifest.py中添加安全文件

在根目录下manifest.py中的data列表中添加csv文件

'data': [
    'security/ir.model.access.csv'
        ]

七.编写视图

views文件夹下,创建My_Cats_HomePage_view.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <data>
    	<!--编写视图,命名规范模型+view+视图名称-->
        <record id="my_cats_view_form" model="ir.ui.view">
            <field name="name">猫猫管理系统</field><!--视图的名称-->
            <field name="model">my.cats</field><!--视图所用的模板-->
            <field name="arch" type="xml"><!--在此标签内,添加视图-->
                <form><!--form视图,内容写在此标签里-->
                    <header><!--标题-->
                    </header>
                    <sheet><!--页标签,可以不加,此是为了美观-->
                        <group><!--将我们所呈现的数据放入此标签内-->
                            <field name="name"/><!--在模行中定义的两个字段-->
                            <field name="code"/>
                        </group>
                    </sheet>
                </form>
            </field>
        </record>
		
		<!--我们发现,tree视图前面三行于from视图差别不大,
		直到tree标签才开始有所变化,
		相比之下的search视图也仅仅是标签的变动,
		来告诉odoo,你需要的是那一个视图-->
        <record id="my_cats_view_tree" model="ir.ui.view">
            <field name="name">猫猫管理系统</field>
            <field name="model">my.cats</field>
            <field name="arch" type="xml">
                <tree>
                    <field name="name"/>
                    <field name="code"/>
                </tree>
            </field>
        </record>

		<!--from/tree/search是最普通,也是最常见的视图-->
        <record id="my_cats_view_search" model="ir.ui.view">
            <field name="name">猫猫管理系统</field>
            <field name="model">my.cats</field>
            <field name="arch" type="xml">
                <search>
                    <field name="name"/>
                    <field name="code"/>
                </search>
            </field>
        </record>

		<!---在创建完视图后,我们开始创建动作,
		命名规范: 模型+action-->
        <record id="my_cats_action" model="ir.actions.act_window">
            <field name="name">猫猫管理系统</field><!--动作的名称-->
            <field name="type">ir.actions.act_window</field><!--固定写法-->
            <field name="res_model">my.cats</field><!--使用模型-->
            <field name="view_mode">tree,form</field><!--使用的视图-->
            <field name="domain">[]</field><!--一些限制-->
            <field name="context">{}</field>
            <field name="search_view_id" ref="my_cats_view_search"/>
            <!--以上代码调用刚刚定义的search视图,
            name值为固定写法,
            ref值填写我们定义的search视图的ID-->
        </record>

		<!--当我们写完视图和动作后,就开始写主(父级)菜单,写法如下
		命名规范:模型+menu_root,
		web_icon:图标
		sequence为菜单排序的优先级,可以改着试试效果
		其他参数暂时不变动
		在odoo中,代表应用菜单中的名称,可以在主菜单中找到该名称命名的模块
		-->
        <menuitem name="猫猫管理系统2.0" id="my_cats_menu_root" sequence="50" groups="base.group_user"
                  web_icon="fcwz_manufacture_manage,static/description/icon.png"/>

		<!--我们在父级菜单下挂一个子级菜单
		action为动作ID
		name为动作名称
		parent为挂靠的父级菜单ID
		sequence为排序的优先级
		在odoo中,代表应用菜单下的子菜单名称,一个主菜单可以挂多个子菜单,子菜单同样也可以继续再挂其他菜单
		-->
        <menuitem action="my_cats_action"
                  id="menu_my_cats"
                  name="猫猫管理系统"
                  parent="my_cats_menu_root"
                  sequence="21"
        />

    </data>
</odoo>

八.manifest.py中添加视图

在根目录下manifest.py中的data列表中添加xml文件

'data': [
        'security/ir.model.access.csv',
        'views/My_Cats_HomePage_view.xml'
    ],

九.安装

如图,搜索安装,当代码无BUG时,会提示已安装:
odoo13模块
然后点击应用,找到猫猫管理系统2.0点开即可:
猫猫管理系统2.0
到此,我们的第一个简单的odoo模块就这样大功告成了.我们开发时,首先要搭建这样的一个简单模块,运行正常后,再循序渐进,添加更多新功能.

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值