我是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>
答案 0 :(得分:2)
您的代码,语法和逻辑错误很多。
为什么要在init,data和demo中编写'mymodule_menu.xml'这个视图 并测试,在7.0版中,init替换为data = [],并在init中 只包括那些将在启动时加载的文件,demo是 用于演示数据,并测试测试文件,如yml
_column使用你错过的_columns
使用三层,第一个超级父母,父母和菜单孩子,否则它将不会是可以理解的。
获取无效的xml错误是因为你错过了2. point _cloumn而不是_columns
希望这个帮助
中首先阅读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'
所以它可能对你的具体情况没有帮助,但也许其他人会发现你的问题也有同样的问题。