8

我正在学习 OpenERP 开发,但我遇到了一个问题,我认为这应该是显而易见的。

我做了一个非常简单的模块,但我无法安装它。它一直在说

ValidateError 验证字段拱时发生错误:视图架构的 XML 无效!

这是我的模块:

初始化.py

import testmod
__openerp__.py

{
'name': "Test Module",
'description': "Basic example of a (future) web module",
'category': 'Hidden',
'depends': ['base'],
'data': [
    'test_view.xml',
],
'installable': True,
'application': False,
'auto_install': False,
}

测试模块.py

from openerp.osv import fields, osv

class testmod_test(osv.Model):
    _name = 'testmod.test'
    _description = 'Test Model'
    _columns = {
    'test1': fields.char('Test 1', size=32, required=True, help='Test 1 help'),
    'test2': fields.float('Test 2', help='Test 2 help'),
    }

testmod_test()

test_view.xml

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

<record id="testmod_test_form" model="ir.ui.view">
    <field name="name">testmod.test.form</field>
    <field name="model">testmod.test</field>
    <field name="arch" type="xml">
      <form string="Test" version="7.0">  
        <field name="test1" />
        <field name="test2"/>

      </form>
    </field>
</record>

<record id="testmod_test_tree" model="ir.ui.view">
  <field name="name">testmod.test.tree</field>
  <field name="model">testmod.test</field>
  <field name="arch" type="xml">
    <tree string="Test">
      <field name="test1" />
       <field name="test2"/>
    </tree>
  </field>
</record>

<record model="ir.actions.act_window" id="action_testmod_test">
  <field name="name">Test</field>
  <field name="res_model">testmod.test</field>
  <field name="view_type">form</field>
  <field name="view_mode">tree,form</field>
</record>

<menuitem 
          name="Test" 
          id="menu_testmod_test" 

          />

<menuitem 
          name="Test sub" 
          parent="menu_testmod_test"
          id="menu_testmod_test_sub" 
          />
<menuitem
        name="Sub Test"
        id="menu_subtest"
        parent="menu_testmod_test_sub"
        action="action_testmod_test"    
        />


</data>
</openerp> 

这是完整的日志错误:

2013-09-17 19:22:19,199 1674 信息 emad92 openerp.modules.loading:加载 1 个模块... 2013-09-17 19:22:19,220 1674 信息 emad92 openerp.modules.loading:加载 10 个模块... 2013-09-17 19:22:19,251 1674 信息 emad92 openerp.modules.loading:加载 11 个模块... 2013-09-17 19:22:19,252 1674 信息 emad92 openerp.modules.module:模块 testmod:创建或更新数据库表 2013-09-17 19:22:19,255 1674 信息 emad92 openerp.modules.loading:模块 testmod:加载 test_view.xml 2013-09-17 19:22:19,269 1674 错误 emad92 openerp.addons.base.ir.ir_ui_view :无法渲染模型的视图:testmod.test Traceback(最近一次调用最后):文件“/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_ui_view.py”,第 126 行,在_check_render_view fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context) AttributeError: 'NoneType' 对象没有属性 'fields_view_get' 2013-09-17 19:22:19,276 1674 错误 emad92 openerp.tools.convert: /opt/modules 中的解析错误-openerp/testmod/test_view.xml:5:

<record id="testmod_test_form" model="ir.ui.view">
    <field name="name">testmod.test.form</field>
    <field name="model">testmod.test</field>
    <field name="arch" type="xml">
      <form string="Test" version="7.0">  
        <field name="test1" />
        <field name="test2"/>

      </form>
    </field>
</record> 

Traceback(最近一次通话最后一次):文件

“/usr/lib/pymodules/python2.7/openerp/tools/convert.py”,第 847 行,解析 self._tags[rec.tag](self.cr, rec, n) 文件“/usr/lib/ pymodules/python2.7/openerp/tools/convert.py”,第 814 行,在 _tag_record id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module , res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context ) 文件 "/usr/lib/pymodules/python2.7/openerp/addons /base/ir/ir_model.py”,第 964 行,在 _update res_id = model_obj.create(cr, uid, values, context=context) 文件“/usr/lib/pymodules/python2.7/openerp/addons/base/ ir/ir_ui_view.py”,第 103 行,在 create return super(view, self).create(cr, uid, values, context) 文件“/usr/lib/pymodules/python2.7/openerp/osv/orm.py”,第 4472 行,在创建 self._validate(cr, user, [id_new], context) 文件“/usr/lib/pymodules/python2.7/openerp/osv/orm.py ",第 1546 行,在 _validate raise except_orm('ValidateError', '\n'.join(error_msgs)) except_orm: ('ValidateError', u'Error occurred while validate the field(s) arch: Invalid XML for View Architecture! ') 2013-09-17 19:22:19,278 1674 错误 emad92 openerp.netsvc: ValidateError 验证字段拱时发生错误:视图架构的 XML 无效!回溯(最近一次调用):文件“/usr/ lib/pymodules/python2.7/openerp/netsvc.py”,第 292 行,在 dispatch_rpc 结果 = ExportService.getService(service_name).dispatch(method, params) 文件“/usr/lib/pymodules/python2.7/openerp/服务/web_services。py”,第 626 行,在调度 res = fn(db, uid, *params) 文件“/usr/lib/pymodules/python2.7/openerp/osv/osv.py”,第 188 行,在 execute_kw 返回 self.execute (db, uid, obj, method, *args, **kw or {}) File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 144, in wrapper raise except_osv(inst .name,inst.value)except_osv:('ValidateError',u'在验证字段拱时发生错误:视图架构的 XML 无效!')2013-09-17 19:22:19,283 1674 信息 emad92 werkzeug: 127.0.0.1 - - [2013 年 9 月 17 日 19:22:19]“POST /web/dataset/call_button HTTP/1.1”200 -*args, **kw or {}) File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 144, in wrapper raise except_osv(inst.name, inst.value) except_osv: ('ValidateError',u'验证字段拱时发生错误:视图架构的 XML 无效!')2013-09-17 19:22:19,283 1674 信息 emad92 werkzeug:127.0.0.1 - - [17/Sep /2013 19:22:19]“POST /web/dataset/call_button HTTP/1.1”200 -*args, **kw or {}) File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 144, in wrapper raise except_osv(inst.name, inst.value) except_osv: ('ValidateError',u'验证字段拱时发生错误:视图架构的 XML 无效!')2013-09-17 19:22:19,283 1674 信息 emad92 werkzeug:127.0.0.1 - - [17/Sep /2013 19:22:19]“POST /web/dataset/call_button HTTP/1.1”200 -POST /web/dataset/call_button HTTP/1.1" 200 -POST /web/dataset/call_button HTTP/1.1" 200 -

我在 linux 平台(ubuntu 13.04)中使用 OpenERP 7.0。

4

3 回答 3

2

一旦安装并重新启用数据部分并升级模块,请尝试注释掉openerp .py 中的数据部分。有时 openerp 无法实际创建模型并导致错误。这可能会解决您的问题

于 2014-04-07T11:36:22.513 回答
2

我已经创建了一个具有上述文件内容的模块,并且安装它没有任何问题。请检查您的文件名和模块结构是否正确。

于 2015-05-26T10:54:34.737 回答
0

发生 AttributeError 异常是因为未正确安装模块。

函数 fields_view_get 尝试查找模型的字段,但它们丢失了。

self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context) AttributeError: 'NoneType' 对象没有属性

您能否检查该模块是否已安装或期待它的简历?通过在 psql select * from ir.model.fields order by id desc 中检查 ir.model.fields 表,这应该显示 2 个字段,但我猜它们不会在表中。Mayby 只有其中之一 2. 从 xml 视图中删除缺少的字段并尝试恢复安装。重启 OpenErp 服务器,卸载并重新安装模块。我有同样的问题,只有在我完全安装模块、重新启动服务器并删除并再次尝试后才能修复

于 2014-04-19T18:13:05.610 回答