版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012551524/article/details/88428834
OpenERP版本:7.0
要求:
1、制作一个新的Addon 'Notebook',包含一个Model (字段title, content, create_date)。在UI上添加相应的菜单并能CRUD。
2、增强上一步的模块,添加一个新字段“type”,这个type是另外一个model (字段 name),可CURD。在新建notebook时,需要选择type。两个model需要进行关联。
一、创建模块命名notebook_type
1、目录结构如下图
__init__.py:
# -*- coding:utf-8 -*- import notebook_type
__openerp__.py:
# -*- coding:utf-8 -*- { "name":"notebook type", "version":"1.0", "description":"demo", "author":"tracy", "depends":['lesson',], //引用菜单定义:lesson "update_xml": ["notebook_type_view.xml",], 'installable': True, 'auto_install': False, }
notebook_type.xml:
# -*- coding:utf-8 -*- from openerp.osv import fields, osv class notebook_type(osv.osv): _name = "notebook_type.notebook_type" _description = "depend notebook" _columns = { "type":fields.char(u"type",szie=64), "code":fields.char(u"code",szie=64), } notebook_type()
notebook_type_view.xml:
<?xml version="1.0" ?> <openerp> <data> <!--定义表单视图--> <record model="ir.ui.view" id ="notebook_type_form_view"> <field name="name">notebook_type</field> <field name="model">notebook_type.notebook_type</field> <field name="type">form</field> <field name="arch" type="xml"> <form string = "notebook_type"> <field name="type"/> <field name="code"/> </form> </field> </record> <!--定义列表视图--> <record model="ir.ui.view" id ="notebook_type_tree_view"> <field name="name">notebook_type_tree</field> <field name="model">notebook_type.notebook_type</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree string = "notebook_type"> <field name="type"/> <field name="code"/> </tree> </field> </record> <!--定义视图动作--> <record model="ir.actions.act_window" id="action_notebook_type"> <field name="name">notebook_type</field> <field name="res_model">notebook_type.notebook_type</field> <field name="view_type">form</field> <field name="view_model">form,tree</field> <field name="view_id" ref="notebook_type_tree_view"/> </record> <!--定义菜单--> <menuitem id="notebook_type_menu" name="notebook_type" parent="lesson.section_main_menu" action="action_notebook_type"/> </data> </openerp>
二、创建模块命名notebook
1、目录结构如下图
__init__.py:
# -*- coding:utf-8 -*- import notebook
__openerp__.py:
# -*- coding:utf-8 -*- { "name":"notebook", "version":"1.0", "description":"demo", "author":"tracy", "depends":['lesson','notebook_type'], //引用notebook_type:type 引用菜单定义:lesson "update_xml": ["notebook_view.xml"], 'installable': True, 'auto_install': False, }
notebook_type.xml:
# -*- coding:utf-8 -*- from openerp.osv import fields, osv class notebook(osv.osv): _name = "notebook.notebook" _description = "demo" _columns = { "title":fields.char(u"title",size=64,select=True), "content":fields.text(u"content",size=1000), "create_date":fields.date(u"create_date",select=True), "type":fields.many2one('notebook_type.notebook_type',u"type"), //type many2one } notebook()
notebook_type_view.xml:
<?xml version="1.0" encoding="utf-8"?> <openerp> <data> <record model="ir.ui.view" id ="notebook_form_view"> <field name="name">notebook</field> <field name="model">notebook.notebook</field> <field name="type">form</field> <field name="arch" type="xml"> <form string = "notebook"> <field name="title"/> <field name="content"/> <field name="create_date"/> <field name="type"/> </form> </field> </record> <record model="ir.ui.view" id ="notebook_tree_view"> <field name="name">notebook_tree</field> <field name="model">notebook.notebook</field> <field name="type">tree</field> <field name="arch" type="xml"> <tree string = "notebook"> <field name="title"/> <field name="content"/> <field name="create_date"/> <field name="type"/> </tree> </field> </record> <record model="ir.actions.act_window" id="action_notebook"> <field name="name">notebook</field> <field name="res_model">notebook.notebook</field> <field name="view_type">form</field> <field name="view_model">form,tree</field> <field name="view_id" ref="notebook_tree_view"/> </record> <menuitem id="notebook_menu" name="notebook" parent="lesson.section_main_menu" action="action_notebook"/> </data> </openerp>
三、界面安装以上两个模块
四、测试
首先菜单下会生成两个模块,(notebook,notebook_type):
测试新建一个一条记录:
并且引用了notebook_type的type字段:
一个简单的记事本创建成功!