OpenERP 7.0入門(三):模塊“增強記事本”


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字段:

一個簡單的記事本創建成功!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章