odoo11 请假条demo 项目工程目录
由于网上的odoo请假条的demo的实例太杂了,所以我就总结了一下,顺便记录下,以防以后忘记。
odoo11项目工程目录.PNG
odoo工程的神奇之处就在于,其项目是在原本的工程目录上新建模块,即addons上新建jiaqing模块,而且不需要我们自己写sql语句,odoo自动帮我们更新数据库。
注:上图红线标出的本人不清楚有什么用。
models文件夹对应的M层,个人认为也是odoo中最难的一部分;views文件夹对应的V层,C层对应的事controllers文件夹(这里没写,路由)
根目录下的__init__.py文件
# -*- coding: utf-8 -*- #utf-8编码
from . import models #依赖路径,这里依赖的事models文件夹下的__init__.py文件,简单来说,__init__.py就是需要导入的文件。
根目录_init_文件.PNG
根目录下的__manifest__.py文件
# -*- coding: utf-8 -*-
{
'name': "qingjia",
'summary':
"""
summary介绍
""",
'description':
"""
description介绍
""",
'author': "作者",
'website': "http://www.yourcompany.com",
'category': '模块所属分类',
'version': '0.1',
'depends': ['base'], #依赖模块
'data': [
'views/views.xml',
'views/templates.xml',
],
'demo': [
'demo/demo.xml', #默认添加的示范数据
],
'application': True,
'installable': True, #默认True,可设为False禁用该模块
'auto_install': False, #默认False,如果设为True,则根据其依赖模块,如果依赖模块都安装了,那么这个模块将自动安装,这种模块通常作为胶合(glue)模块。
'application': False #默认False,如果设为True,则这个模块成为一个应用了。你的主要模块建议设置为True,这样进入Odoo后点击本地模块,然后默认的搜索过滤就是 应用 ,这样你的主模块会显示出来。
}
以上的代码大多数都能在下面的2张图上找到对应的位置
[图片上传中...(app详情图.PNG-3b391-1513593932389-0)]
app详情图.PNG
models目录下的models.py文件
from odoo import models, fields, api
class qingjiadan(models.Model):
_name = 'qingjia.qingjiadan' #对应的pg数据库表名,qingjia_qingjiadan 自动创建
# 字段名
name = fields.Char(string="申请人")
days = fields.Integer(string="天数")
startdate = fields.Date(string="开始日期")
reason = fields.Text(string="请假事由")
# name与active是特殊字段:name字段作为记录的标题。active字段用于是否激活记录。
# name = fields.Char('Description', required=True)
# active = fields.Boolean('Active?', default=True)
# 系统自动创建字段名
# id
# create_date (Datetime) 记录创建时间
# create_uid(Many2one) 操作人id
# write_date (Datetime) 最后修改时间
# write_uid (Many2one) 最后操作人id
init.py文件就不说明了,就是导入models文件
pg自动生成的表名.PNG
pgAdmin4本人的表名目录:Server>Database>postgres>Schemas>public>Tables>qingjia_qingjiadan
views文件夹下的views.xml
<odoo>
<data>
<!-- tree视图 -->
<record id="view_tree_qingjia_qingjiadan" model="ir.ui.view">
<!-- 无实际意义 -->
<field name="name">请假单列表</field>
<!-- 对应的models目录下的models.py-->
<field name="model">qingjia.qingjiadan</field>
<!-- tree/from/list/search 需要用arch和xml定义-->
<field name="arch" type="xml">
<tree>
<!-- 字段名 -->
<field name="name"/>
<field name="days"/>
<field name="startdate"/>
<field name="reason" />
</tree>
</field>
</record>
<!-- form视图 -->
<!-- 下面的操作会在model="ir.ui.view"(表名ir_ui_view)中插入一条数据 -->
<record id="view_form_qingjia_qingjiadan" model="ir.ui.view">
<field name="name">请假单</field>
<field name="model">qingjia.qingjiadan</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_qingjiadan"
name="请假单"
res_model="qingjia.qingjiadan"
view_mode="tree,form" />
<menuitem name="请假" id="menu_qingjia"/>
<menuitem name="请假单" id="menu_qingjia_qingjiadan" parent="menu_qingjia" action="action_qingjia_qingjiadan"/>
</data>
</odoo>