我尝试在eclipse中编码,当我运行它时无法向我显示任何错误
这是test_module.py文件
from osv import osv
from osv import fields
class MyClass(osv.osv):
'''
classdocs
'''
_name='my.class'
_columns={
'name':fields.char("Name",size=128,),
'code':fields.char("Code",size=127,),
}
MYClass()
def __init__(selfparams):
'''
Constructor
'''
这是xml文件
<?xml version=“1.0″ encoding=“utf-8″?>
<openerp>
<data>
<record model=“ir.ui.view” id=“test_base_form”>
<field name=“name”>test.base.form</field>
<field name=“model”>test.base</field>
<field name=“type”>form</field>
<field name=“arch” type=“xml”>
<form string=“Test Base”>
<field name=“name”/>
<field name=“code”/>
</form>
</field>
</record>
<record model=“ir.ui.view” id=“test_base_tree”>
<field name=“name”>test.base.tree</field>
<field name=“model”>test.base</field>
<field name=“type”>tree</field>
<field name=“arch” type=“xml”>
<tree string=“Test Base”>
<field name=“name”/>
<field name=“code”/>
</tree>
</field>
</record>
<record model=“ir.actions.act_window” id=“action_test_seq”>
<field name=“name”>Test Base</field>
<field name=“res_model”>test.base</field>
<field name=“view_type”>form</field>
<field name=“view_mode”>tree,form</field>
</record>
<menuitem id=“menu_test_base_main” name=“Test Base”/>
<menuitem id=“menu_test_base” parent=“menu_test_base_main”
name=“Test Base” action=“action_test_seq”/>
</data>
</openerp>
当我转到__init__.py
文件并像这样导入时
import test_module
它不能显示任何错误 然后,当我想显示这个模块,然后我去设置 - 更新模块列表 那么在OpenERP中它无法向我展示任何模块 问题出在哪儿? 我已经尝试了很多次但是无法在OpenERP中显示模块
答案 0 :(得分:1)
我的问题是我无法理解你到底在做什么。您发布的代码没有显示您的方法,格式非常糟糕。例如以下
model=“ir.ui.view”
由于使用了错误的引号,无效的xml属性定义。应该是这样的:
model="ir.ui.view"
这就是为什么我会从代码开始给出我遵循的基本步骤。
首先,文件 test_module.py
中的模型定义from osv import osv
from osv import fields
class MyClass(osv.osv):
'''
classdocs
'''
_name='my.class'
_columns={
'name': fields.char("Name", size=128,),
'code': fields.char("Code", size=127,),
}
# Corrected - MyClass() instead of MYClass()
MyClass()
这里没什么特别的,除了你在实例化时拼错了类名。我还删除了__init __()方法,因为他的位置不在你放置的位置。
其次, __ init __。py 文件加载新模型:
import test_module
现在,XML文件包含视图,操作和菜单定义。
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="test_base_form">
<field name="name">test.base.form</field>
<!-- corrected to have the right model as programmed in test_module.py -->
<field name="model">my.class</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Test Base">
<field name="name"/>
<field name="code"/>
</form>
</field>
</record>
<record model="ir.ui.view" id="test_base_tree">
<field name="name">test.base.tree</field>
<!-- corrected to have the right model as programmed in test_module.py -->
<field name="model">my.class</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Test Base">
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_test_seq">
<field name="name">Test Base</field>
<!-- corrected to have the right model as programmed in test_module.py -->
<field name="res_model">my.class</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_test_base_main" name="Test Base"/>
<!-- Removed parent. You need an existing parent menu if you want to specify one -->
<!-- Also the action attribute has to point to the action you just defined -->
<menuitem id="menu_test_base"
name="Test Base" action="action_test_seq"/>
</data>
</openerp>
看看我在XML中的评论。
最后一步是 __ openerp __。py 文件中的OpenERP模块定义:
{
'name': 'Test module',
'description': 'Module for demonstration of the new module creation process in OpenERP',
'category': 'Test',
'author': 'Andrei Boyanov <andrei at novatus dot bg>',
'website': 'http://novatus.bg',
'version': '0.01',
'depends': [],
'init_xml': [],
'update_xml': [
'test_view.xml',
],
'installable': True,
}
这里重要的一件事是更新时要考虑的XML文件列表。
在完成所有这些后,我进入了管理 - &gt;模块菜单并执行更新模块列表。当我通过名称测试过滤模块时,您的新模块出现在我的列表中。我选择它进行安装,然后通过 Apply Scheduled Updates 菜单操作安装它。
Etvoilà - 用于刷新的F5和主菜单栏中出现的新菜单 TEST BASE 。现在我可以在数据库中创建新的my.class对象。
此收据对OpenERP 6.0有效。我没有在OpenERP 7上测试它,我知道模块定义存在一些差异。