其他分享
首页 > 其他分享> > 重写odoo笔记(三)创建自己的模块

重写odoo笔记(三)创建自己的模块

作者:互联网

简介

不管别人教学怎么样,我喜欢用脚手架

一:scaffold

pycharm打开终端,

 

 

 

 如果是PS的,就去激活一下虚拟环境

cmd powershell命令类似

cmd是bat批处理

powershell是ps1脚本

 

 

python odoo-bin scaffold name(模块名称) destinaton(要存放模块的目录)

本例做个todo吧。

在myaddons下生成了jack_todo这么一整套odoo模块结构

二:安装模块

修改过py文件,需要重启服务,重启一下,开发者模式下去模块更新本地模块,然后搜索todo

可以安装一下,不过什么都没有。

 

 

 

 

 

 

三:myaddons/jack_todo/__manifest__.py

__manifest__.py模块配置文件

自己翻译着改改吧

我喜欢写:

'category': 'Hidden',   
'installable': True,
'application': True,
'auto_install': False,

 

 

 这样就可以不用搜索,直接显示在技术下面,省的搜索了。

四:myaddons/jack_todo/models/models.py

models.py

模型文件

 1 # -*- coding: utf-8 -*-
 2 
 3 from odoo import models, fields, api
 4 
 5 
 6 class jack_todo(models.Model):     #模型类名,不能重复,所以我带上jack,一般不重复。
 7     _name = 'jack_todo.jack_todo'   #模型名,表名,不能重复
 8     _description = 'jack_todo.jack_todo'  #说明,可以随便改
 9 
10     #下面是字段名
11     name = fields.Char()
12     value = fields.Integer()
13     value2 = fields.Float(compute="_value_pc", store=True)
14     description = fields.Text()
15 
16     @api.depends('value')
17     def _value_pc(self):
18         for record in self:
19             record.value2 = float(record.value) / 100
20 
21     to_do_name=fields.Char()   #任务名
22     ded_line=fields.Datetime() #截至时间
23     is_done=fields.Boolean()   #是否完成
View Code

 

从简单的来,原有的取消注释,最下面三行是我加的,任务名,截至时间,是否完成。

五:views.xml--tree

myaddons/jack_todo/views/views.xml

tree视图,列表视图

第一段,取消注释

 1     <!-- explicit list view definition -->
 2 
 3     <record model="ir.ui.view" id="jack_todo.list"> 
 4 <!--      #id是视图id,不能重复-->
 5       <field name="name">jack_todo list</field>     
 6 <!--      #名字随便写-->
 7       <field name="model">jack_todo.jack_todo</field>  
 8 <!--      #模型名称,model当中的表名-->
 9       <field name="arch" type="xml">
10         <tree>
11 <!--          tree视图,列表视图-->
12           <field name="name"/>    
13 <!--          #原有字段名-->
14           <field name="value"/>   
15 <!--          #原有字段名-->
16           <field name="value2"/>  
17 <!--          #原有字段名-->
18           <field name="to_do_name"/>  
19 <!--          #新加字段名-->
20           <field name="ded_line"/>  
21 <!--          #新加字段名-->
22           <field name="is_done"/>  
23 <!--          #新加字段名-->
24         </tree>
25       </field>
26     </record>
View Code

六:views.xml--action

 myaddons/jack_todo/views/views.xml

动作,前端动作

第二段,取消注释

 1     <!-- actions opening views on models -->
 2 
 3     <record model="ir.actions.act_window" id="jack_todo.action_window">   
 4 <!--      #继承自"ir.actions.act_window",id名不能重复-->
 5       <field name="name">jack_todo window</field>                        
 6 <!--      #名字随便写-->
 7       <field name="res_model">jack_todo.jack_todo</field>                 
 8 <!--      #从哪个模型返回,表名-->
 9       <field name="view_mode">tree,form</field>                           
10 <!--      #视图类型,tree form-->
11     </record>
View Code

 

七:views.xml--server action

 myaddons/jack_todo/views/views.xml

动作,服务器动作

第三段,取消注释

 1     <!-- server action to the one above -->
 2 
 3     <record model="ir.actions.server" id="jack_todo.action_server">         
 4 <!--      #继承自"ir.actions.act_window",id名不能重复-->
 5       <field name="name">jack_todo server</field>                          
 6 <!--      #名字随便写-->
 7       <field name="model_id" ref="model_jack_todo_jack_todo"/>             
 8 <!--      #从哪个模型返回,表名-->
 9       <field name="state">code</field>                                     
10 <!--      #动作类型code  动作内容开始-->
11       <field name="code">
12         action = {
13           "type": "ir.actions.act_window",
14           "view_mode": "tree,form",
15           "res_model": model._name,
16         }
17       </field>                                                              
18 <!--      #动作内容结束,和前面一样,继承自 ir.actions.act_window 视图类型tree form,模型名,在前面model_id定义过了,所以这里写model._name-->
19     </record>
View Code

 

八:views.xml--menuitem

 myaddons/jack_todo/views/views.xml

菜单,终于到了起点。

最后几段,取消注释

 1     <!-- Top menu item -->
 2     
 3     <menuitem name="jack_todo" id="jack_todo.menu_root"/>
 4 <!--    顶级菜单,点左上角的时候,出来的菜单名-->
 5     <!-- menu categories -->
 6 
 7     <menuitem name="Menu 1" id="jack_todo.menu_1" parent="jack_todo.menu_root"/>
 8     <menuitem name="Menu 2" id="jack_todo.menu_2" parent="jack_todo.menu_root"/>
 9 <!--    二级菜单-->
10     <!-- actions -->
11 
12     <menuitem name="List" id="jack_todo.menu_1_list" parent="jack_todo.menu_1"
13               action="jack_todo.action_window"/>
14     <menuitem name="Server to list" id="jack_todo" parent="jack_todo.menu_2"
15               action="jack_todo.action_server"/>
16 <!--    三级菜单-->
View Code

 

九:安装模块

前面好几部都没重启,尤其是修改了models.py,需要重启,重启服务,安装模块。

还是什么变化都没有。

十:表级别权限

myaddons/jack_todo/security/ir.model.access.csv

ir.model.access.csv

看名字都能看出来,model的权限

不管它是什么了。默认值够用,以后再解释。

__manifest__.py文件中

将这个文件的注释取消。再重启升级一下。

'data': [
'security/ir.model.access.csv',
'views/views.xml',
'views/templates.xml',
],

 

 

 

 

 十一:结语

先随便搞一个出来好了。

自己的应用。

后面慢慢讲学习各个细节。

标签:xml,fields,views,重写,myaddons,jack,模块,odoo,todo
来源: https://www.cnblogs.com/jackadam/p/16463495.html