Odoo11入门请假单模块学习教程源码
欢迎转载,但必须明显标注转载地址。
系统:Windows10
版本:Odoo11
一、创建模块
1、创建一个模块的骨架结构目录(在windows 的 CMD中)
E:\Odoo 11.0> python\python.exe server\odoo-bin scaffold qingjia server\odoo\addons
- E:\Odoo 11.0 是我的Odoo安装根目录
- scaffold 是Odoo的一个脚手架功能,脚手架是自动创建骨架结构以简化引导(在Odoo的情况下,新模块)。虽然没有必要,但它避免了设置基本结构和查找所有起始要求的乏味。
- E:\Odoo 11.0\python\python.exe 是Odoo自带的Python环境
- E:\Odoo 11.0\server\odoo-bin 是Odoo命令的入口
- E:\Odoo 11.0\server\odoo\addons 是Odoo模块的存放目录
2、目录结构:

- controllers
- models
- security
- views
- __init__.py
- __manifest__.py
自定义的控制器实现,具体用法参考website模块;自定义一些网页或功能可通过Controller实现。
这是ORM层。该层避免必须手动编写大多数SQL并提供可扩展性和安全性服务。业务对象被声明为继承Model的类,这些类将被集成到数据库中。
访问控制机制的安全策略配置。
视图文件。目录models目录下的模型对象的视图文件,如表单视图、列表视图、搜索视图、看板视图等等
模块初始化文件,包含模块中各种Python文件的导入指令。
清单文件。存放模块的信息(名称、开发者、介绍、地址、版本等)、views配置等
二、编写代码
这里我们关注三个文件:
__manifest__.py 、models\models.py 、views\views.xml
1、__manifest__.py
# -*- coding: utf-8 -*-
{
'name': "qingjia", 'summary': """
请假模块
""", 'description': """
请假模块
""", 'author': "LuHuan",
'website': "https://www.cnblogs.com/luhuan", # Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/master/odoo/addons/base/module/module_data.xml
# for the full list
'category': 'Uncategorized',
'version': '0.1', # any module necessary for this one to work correctly,一般继承这个base模块即可。如果需要其他模块的功能再说。
'depends': ['base'], # always loaded,需要加载的view和模板
'data': [
# 'security/ir.model.access.csv',
'views/views.xml',
'views/templates.xml',
],
# only loaded in demonstration mode,一般不需要这个demo,可以删掉
'demo': [
'demo/demo.xml',
],
}
2、models.py
# -*- coding: utf-8 -*-
from odoo import models, fields, api class QingJia(models.Model):
_name = 'qingjia.qingjia'
name = fields.Char(string=u"申请人")
days = fields.Integer(string=u"天数")
startdate = fields.Date(string=u"开始日期")
reason = fields.Text(string=u"请假事由")
这是Python代码,需要按照Python的规范编写
_name 表示该模块的名称,规范:模块名称.模型名称
3、views.xml
<odoo>
<data>
<!-- tree视图 -->
<record id="view_tree_qingjia_qingjia" model="ir.ui.view">
<field name="name">请假单列表</field>
<field name="model">qingjia.qingjia</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="days"/>
<field name="startdate"/>
</tree>
</field>
</record> <!-- form视图 -->
<record id="view_form_qingjia_qingjia" model="ir.ui.view">
<field name="name">请假单</field>
<field name="model">qingjia.qingjia</field>
<field name="arch" type="xml">
<form>
<sheet>
<group name="group_top" string="请假单">
<field name="name"/>
<field name="days"/>
<field name="startdate"/>
<field name="reason"/>
</group>
</sheet>
</form>
</field>
</record> <!-- 视图动作 -->
<act_window id="action_qingjia_qingjia"
name="请假单"
res_model="qingjia.qingjia"
view_mode="tree,form" /> <!-- 顶级菜单 -->
<menuitem name="请假" id="menu_qingjia" active="False"/> <!-- 二级菜单 -->
<menuitem name="请假单" id="menu_qingjia_qingjia" parent="menu_qingjia" action="action_qingjia_qingjia"/>
Views有很多种视图,这里写了基本的tree和form视图。设置了顶级菜单和二级菜单。
三、安装模块
1、重启Odoo服务

2、开启开发模式

3、更新应用列表

4、安装应用

5、结果

有问题可以评论,一起讨论交流。
Odoo11入门请假单模块学习教程源码的更多相关文章
- C#入门教程源码
C#入门教程源码 [日期:2019-01-26] 来源:51zxw.net 作者:zhangguofu [字体:大 中 小] 方法一:百度云盘下载地址: 链接:https://pan.baidu.c ...
- HarmonyOS单模块编译与源码导读
我这里以3518的开发板为例进行讲解,3516的也是通用的. 下面是之前全量编译的脚本 python build.py ipcamera_hi3518ev300 -b debug HarmonyOS最 ...
- 1.1XAF框架开发视频教程-简单的订单管理实现过程,视频,提纲,及教程源码
下面是视频教程的提纲: PPT版本的提纲下载 本节源码下载 XAF框架开发教程 快速实现企业级信息系统开发的利器 XAF简介 ´ 开发公司:www.devexpress.com,老牌控件公司 ´ ...
- 《java从入门到精通》学习记录
目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...
- Netty 学习(五):服务端启动核心流程源码说明
Netty 学习(五):服务端启动核心流程源码说明 作者: Grey 原文地址: 博客园:Netty 学习(五):服务端启动核心流程源码说明 CSDN:Netty 学习(五):服务端启动核心流程源码说 ...
- 一个入门rpc框架的学习
一个入门rpc框架的学习 参考 huangyong-rpc 轻量级分布式RPC框架 该程序是一个短连接的rpc实现 简介 RPC,即 Remote Procedure Call(远程过程调用),说得通 ...
- 《Angular4从入门到实战》学习笔记
<Angular4从入门到实战>学习笔记 腾讯课堂:米斯特吴 视频讲座 二〇一九年二月十三日星期三14时14分 What Is Angular?(简介) 前端最流行的主流JavaScrip ...
- 《ASP.NET4从入门到精通》学习笔记2
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/dongdongdongJL/article/details/37610807 <ASP.N ...
- Linux快速入门打开你的学习之道
Linux快速入门打开你的学习之道 相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什 ...
随机推荐
- RN 开发常见小问题
1 定时器每隔多少秒调用一次 直接贴代码 可复制使用 componentWillUnmount() { this.timer && clearInterval(this.timer) ...
- Netty中解码基于分隔符的协议和基于长度的协议
在使用Netty的过程中,你将会遇到需要解码器的基于分隔符和帧长度的协议.本节将解释Netty所提供的用于处理这些场景的实现. 基于分隔符的协议 基于分隔符的(delimited)消息协议使用定义的字 ...
- Java 8 异常该进
try-with-resources 这个特性是在JDK7中出现的,我们在之前操作一个流对象的时候大概是这样的: try { // 使用流对象 stream.read(); stream.write( ...
- 网络编程之套接字(udp)
Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机 ...
- echart css样式弄了几个月了,样式一直都没有好好解决,好激动
legend 图例,每个图表最多仅有一个图例.try this » 名称 默认值 描述 {string} orient 'horizontal' 布局方式,默认为水平布局,可选为:'horizonta ...
- mpvue-编写微信小程序总结
一.写在前面: .....最近在写一个微信小程序项目,在看完官方微信小程序开发文档后,有一种直接想"放弃"的念头: .....使用微信小程序原生框架可以快速,方便,简洁的搭建项目, ...
- Java公开课-02.抽象类和接口
在讲述抽象类和接口之前,扯点别的:封装,继承,多态,我只做个简单的涉略 一,封装 1.体现: 将变量和方法放到一个类中 私有字段封装成共有属性 2.this: 如果发现成员变量的名称和方法参数的名称相 ...
- Python之深浅拷贝
拷贝就是拷贝,何来深浅之说? Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果 其实这个是由于共享内存导致的结果 浅拷贝 l1 = [1,2,3 ...
- Supported method argument types Spring MVC
Supported method argument types The following are the supported method arguments: Request or respons ...
- 『自我の感悟』alt or title?
img标签中alt和title属性的正确使用:在的img标签有两个属性分别为alt和title,对于很多初学者而言对这两个属性的正确使用都还抱有迷惑,当然这其中一部分原因也是ie浏览器所导致的.正确的 ...