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>