odoo学习

刚开始仿照已有知识django框架学习,发现相同和不同。

第一个 odoo项目

odoo基础学习笔记1_xml

下载odoo源代码,新建属于自己的模块,至少包含上述文件。

首先在odoo.conf中配置数据库相关信息,

强调一下:加载文件目录

addons_path = F:/odoo-14.0/addons, F:/odoo-14.0/my_addons/covid_w

就可以在model中建立属于你的模块

这里以covid_w.py为例

odoo基础学习笔记1_文件目录_02odoo基础学习笔记1_xml_03
 1 from odoo import api, fields, models
 2 
 3 class CovidW(models.Model):
 4     _name = 'covid.w'
 5 
 6     name = fields.Char(string='姓名')
 7     date = fields.Date(string='确诊日期')
 8     state = fields.Char(string='省')
 9     city = fields.Char(string='市')
10     county = fields.Char(string='区/县')
11     street = fields.Char(string='具体地址')
12     ill_type = fields.Char(string='感染方式')
13     within_or_abroad = fields.Selection([('within', '境内'), ('abroad', '境外')], string='境内/境外感染')
14     is_ill = fields.Boolean(string='是否确诊')
15     begin_lsolation_date = fields.Date(string="起始隔离日期")
16     lsolation_mode = fields.Selection([('home', '居家隔离'), ('focus', '集中隔离')], string="隔离方式")
17     create_user_id = fields.Many2one('res.users', string='填报人')
covid_w.py

配置好py文件以后要新建xml文件布局,类比成django的前端html?(我看着像,欢迎指正)

xml文件以模块名_view命名,

odoo基础学习笔记1_文件目录_02odoo基础学习笔记1_xml_03
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <odoo>
 3     <record id="covid_w_tree_view" model="ir.ui.view">
 4         <field name="name">疫情记录</field>
 5         <field name="model">covid.w</field>
 6         <field name="arch" type="xml">
 7             <tree>
 8                 <field name="name"/>
 9                 <field name="date"/>
10                 <field name="state"/>
11                 <field name="city"/>
12                 <field name="county"/>
13                 <field name="street"/>
14                 <field name="ill_type"/>
15                 <field name="within_or_abroad"/>
16             </tree>
17         </field>
18     </record>
19     <record id="covid_w_tree_view" model="ir.ui.view">
20         <field name="name">疫情记录</field>
21         <field name="model">covid.w</field>
22         <field name="arch" type="xml">
23             <form>
24                 <sheet>
25                     <group>
26                         <group>
27                             <field name="name" string="姓名" required="1"/>   <!-- required="1" 此项设置为必填项-->
28                             <field name="is_ill" string="是否确诊"/>
29                             <field name="within_or_abroad" string="境内/境外"/>
30                             <field name="begin_lsolation_date" string="起始隔离日期" attrs="{required':[('is_ill','=',False)],'invisible':[('is_ill','=',True)]}"/>   <!-- invisible="1" 此项设置为隐藏型-->
31                             <field name="lsolation_mode" string="隔离方式" attrs="{required':[('is_ill','=',False)],'invisible':[('is_ill','=',True)]}"/>
32                             <field name="ill_type" string="感染方式" attrs="{'required':[('is_ill','=',True)],'invisible':[('is_ill','=',False)]}"/>    <!--隐藏方式与是否确诊关联 is_ill为False时invisible为真-->
33                             <field name="date" string="确诊日期" attrs="{required':[('is_ill','=',True)],'invisible':[('is_ill','=',False)]}"/>
34                         </group>
35                         <group>
36                             <field name="state" string="省" required="1"/>
37                             <field name="city" string="市" required="1"/>
38                             <field name="county" string="区/县"/>
39                             <field name="street" string="具体地址" required="1"/>
40                             <field name="create_user_id" string="填报人"/>
41                         </group>
42                     </group>
43                 </sheet>
44             </form>
45         </field>
46     </record>
47 
48 <!--    定义一个行为   -->
49     <record id="covid_w_act_window" model="ir.actions.act_window">
50         <field name="name">疫情记录</field>
51         <field name="res_model">covid.w</field>
52         <field name="view_mode">tree,form</field>
53     </record>
54 
55     <menuitem name="疫情记录" id="covid_w_menu_root" groups="base.group_user" sequence="10"/>
56     <menuitem name="疫情记录" id="sec_covid_w_menu"
57               parent="covid_w_menu_root"
58               action="covid_w_act_window"
59               sequence="10"/>
60 </odoo>
xml文件

在运行之前还要配置__manifest__.py文件,里面是字典

odoo基础学习笔记1_文件目录_02odoo基础学习笔记1_xml_03
 1 {
 2     # Theme information
 3     'name': "疫情记录",
 4     'summary': """
 5         疫情记录""",
 6 
 7     'description': """
 8         疫情记录""",
 9 
10     # 'category': 'Theme',
11     'version': '0.1',
12     'depends': [],
13 
14     # templates
15     'data': [
16         'security/ir.model.access.csv',
17         'views/covid_w_view.xml',
18     ],
19     # 'installable': True,
20     'application': True,     # 是否是独立模块
21     'depends': [],
22 
23     # demo pages
24 
25 
26 
27     # Your information
28     'author': "My Company",
29     'website': "",
30 }
__menifest__.py

在剩下几个__init__文件中导入模块就能开始运行自己第一个odoo模块了。

运行odoo-bin.py,在浏览器输入127.0.0.1:8069进入odoo.

odoo基础学习笔记1_xml_08

点击安装,就能进入自己的第一个odoo模块了。(每次修改代码都要升级一些模块)

 刚开始学习,还描述不太清楚,后续会完善。

以上,直接复制可能运行出错,

搬运方便学习。