重写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