ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-10 17:34:39  阅读:208  来源: 互联网

标签:xml fields views 重写 myaddons jack 模块 odoo todo


简介

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

一: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有