验证字段arch时发生ValidateError错误:View Architecture的XML无效!?

时间:2013-08-26 09:10:00

标签: python xml openerp

我是OpenERP的新手。我在ubuntu12.04和eclipse juno上开发了一个安装在OpenERP v7中的新模块,但是我遇到了以下错误。

"ValidateError Error occurred while validating the field(s) arch: Invalid XML for View Architecture!"

任何人都可以帮助我......

以下是我的所有文件。

_ 初始化 _。PY

import mymodule

__openerp__.py

{
    'name': 'mymodule',
    'version': '1.0',
    'category': 'My own Module',
    'description': """
This is customised mymodule
""",
    'author': 'SANTOSH',
    'maintainer': 'SANTOSH',
    'images' : ['images/icon.jpg'],
    'depends': ['base','web'],
    'init_xml' : ['mymodule_menu.xml'],
    'data': [
        'mymodule_menu.xml',

    ],
    'demo': [
        'mymodule_menu.xml',
    ],
    'test': [
        'mymodule_menu.xml',
    ],

    'installable': True,
    'auto_install': False,
}

mymodule.py

from openerp.osv import fields, osv

class mymodule_test(osv.osv):
    _name = "mymodule.test"
    _column = {'name':fields.char('Name',size=256, Required = True ),
               'company':fields.char('Company', size = 256, Required = True),
               }

mymodule_test()

mymodule_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>


        <record model="ir.ui.view" id="mymodule.test_view_form">
            <field name="name">Mymodule</field>
            <field name="model">mymodule.test</field>
            <field name="arch" type="xml">
                <form string="Mymodule" version="7.0">
                    <field name="name"/>
                    <field name="company"/>
                </form>
            </field>
        </record>


        <record id="action_mymodule" model="ir.actions.act_window">
            <field name="name">mymodule</field>
            <field name="res_model">mymodule.test</field>
            <field name="view_type">form</field>
            <field name="view_mode">form,tree</field>
        </record>
        <menuitem id="section_main_menu" name="Mymodule" />
        <menuitem id="menuitem_id" name="MymoduleList" parent="section_main_menu" action="action_mymodule" />
    </data>
</openerp>

3 个答案:

答案 0 :(得分:2)

您的代码,语法和逻辑错误很多。

  1. 为什么要在init,data和demo中编写'mymodule_menu.xml'这个视图 并测试,在7.0版中,init替换为data = [],并在init中 只包括那些将在启动时加载的文件,demo是 用于演示数据,并测试测试文件,如yml

  2. _column使用你错过的_columns

  3. 菜单创建中的
  4. 使用三层,第一个超级父母,父母和菜单孩子,否则它将不会是可以理解的。

  5. 获取无效的xml错误是因为你错过了2. point _cloumn而不是_columns

    希望这个帮助

    在开始doc.openerp.com

    中首先阅读openerp文档之前

答案 1 :(得分:0)

这是你的工作模块。请回复澄清。

<强> _ 初始化 _。PY

import mymodule

<强> _ OpenERP的 _。PY

{
'name': 'mymodule',
'version': '1.0',
'category': 'Tools', # There's a procedure to add your own category  
'description': """
This is customised mymodule
""",
'author': 'Vivek',
'depends': [
    'base'
],
'data': ['mymodule_menu.xml'],
'demo': [],
'installable': True,
'auto_install': False
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

<强> mymodule_menu.xml

 <?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

    <record model="ir.ui.view" id=" test_view_form">
        <field name="name">Mymodule</field>
        <field name="model">mymodule.test</field>
        <field name="arch" type="xml">
            <form string="Mymodule" version="7.0">
                <field name="name"/>
                <field name="company"/>
            </form>
        </field>
    </record>


 <!-- Module Tree View -->
    <record id="view_mymodule_tree" model="ir.ui.view">
        <field name="name">My Module</field>
        <field name="model">mymodule.test</field>
        <field name="arch" type="xml">
            <tree string="My Module">
                <field name="name" string="Name" />
                <field name="company" string="Company" />
            </tree>
        </field>
    </record>

    <record id="action_mymodule" model="ir.actions.act_window">
        <field name="name">mymodule</field>
      <field name="type">ir.actions.act_window</field>
        <field name="res_model">mymodule.test</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form </field>
    </record>

    <!-- Top Menu Item -->
    <menuitem name="My Module" id="menu_mymodule" />

    <!-- Left-side menu: Guests -->
    <menuitem name="My Module List" parent="menu_mymodule" id="mymodule_label" />

    <!-- Action Menu -->
    <menuitem name="Actual Module List" parent="mymodule_label" id="mymodule_label_actual"
        action="action_mymodule" />
</data>
</openerp>

<强> mymodule.py

from openerp.osv import fields, osv

class mymodule_test(osv.osv):
_name = "mymodule.test"
_columns = {'name':fields.char('Name',size=256, Required = True ),
           'company':fields.char('Company', size = 256, Required = True),
           }

mymodule_test()

你错过了很多东西。请比较您的代码和此代码,以查看您错过的地方。

这是关于添加新类别的说明

如何为开发的模块添加新类别? 模块类别列表从文件服务器/ openerp / addons / base / module / module_data.xml加载。

你也可以看到它查询ir_module_category Postgres表。

这是我发现的:

seq name

=== ================================

1客户关系管理

2销售管理

3项目管理

4知识管理

5仓库管理

6制造

7发票&amp;付款

8会计&amp;金融

9采购管理

10人力资源

11个额外工具

12营销

13销售点

14高级报告

由于类别ID是many2one字段,不是,因此模块不能有多个类别。选择最具代表性的一个(大多数菜单选项都在哪个顶级菜单下?)。

添加新类别

module_data.xml

    <record model="ir.module.category" id="module_category_custom_modules">
        <field name="name">Custom Modules</field>
        <field name="sequence">16</field>
    </record>

答案 2 :(得分:0)

我有相同的错误消息,但我的问题只是,写了一个“openacademy”模块,我在openacademy.py中写道:

class openacademy_course(osv.osv):
    _name = 'course'
    …

我应该写的时候:

class openacademy_course(osv.osv):
    _name = 'openacademy.course'

所以它可能对你的具体情况没有帮助,但也许其他人会发现你的问题也有同样的问题。