odoo学习
刚开始仿照已有知识django框架学习,发现相同和不同。
第一个 odoo项目
下载odoo源代码,新建属于自己的模块,至少包含上述文件。
首先在odoo.conf中配置数据库相关信息,
强调一下:加载文件目录
addons_path = F:/odoo-14.0/addons, F:/odoo-14.0/my_addons/covid_w
就可以在model中建立属于你的模块
这里以covid_w.py为例
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='填报人')
配置好py文件以后要新建xml文件布局,类比成django的前端html?(我看着像,欢迎指正)
xml文件以模块名_view命名,
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>
在运行之前还要配置__manifest__.py文件,里面是字典
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 }
在剩下几个__init__文件中导入模块就能开始运行自己第一个odoo模块了。
运行odoo-bin.py,在浏览器输入127.0.0.1:8069进入odoo.
点击安装,就能进入自己的第一个odoo模块了。(每次修改代码都要升级一些模块)
刚开始学习,还描述不太清楚,后续会完善。
以上,直接复制可能运行出错,
搬运方便学习。