OpenERP 7向现有模块添加字段 - XML验证错误

时间:2014-05-28 18:46:54

标签: python xml xpath openerp openerp-7

我是编辑/编程OpenERP模块的新手,所以我跟着this tutorial只是在项目模块中添加一个字段。我遇到了一些错误,我已经修复了所有错误,但现在我的XML根本无法验证。我已阅读多篇论坛帖子,在stackoverflow上阅读每篇类似的帖子,我无法弄清楚我的问题。所以,这是服务器的错误日志输出和我的文件:

的OpenERP-server.log中:

2014-05-28 17:56:13,120 29680 ERROR mct openerp.osv.orm: Can't find field 'mct_projects_machine' in the following view parts composing the view of object model 'project.project':
 * project.project.form

Either you wrongly customized this view, or some modules bringing those views are not compatible with your current data model
2014-05-28 17:56:13,122 29680 ERROR mct openerp.addons.base.ir.ir_ui_view: Can't render view  for model: project.project
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_ui_view.py", line 126, in _check_render_view
    fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 2278, in fields_view_get
    xarch, xfields = self.__view_look_dom_arch(cr, user, result['arch'], view_id, context=ctx)
  File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 1955, in __view_look_dom_arch
    raise except_orm('View error', msg)
except_orm: ('View error', u"Can't find field 'mct_projects_machine' in the following view parts composing the view of object model 'project.project':\n * project.project.form\n\nEither you wrongly customized this view, or some modules bringing those views are not compatible with your current data model")
2014-05-28 17:56:13,128 29680 ERROR mct openerp.tools.convert: Parse error in /usr/lib/pymodules/python2.7/openerp/addons/mct_projects/mct_projects.xml:4: 
<record model="ir.ui.view" id="mct_projects_project">
         <field name="name">project.project.form</field>
         <field name="model">project.project</field>
         <field name="inherit_id" ref="project.edit_project"/>
         <field name="arch" type="xml">
            <xpath expr="//field[@name='partner_id']" position="after">
               <field name="mct_projects_machine"/>
            </xpath>
         </field>
      </record>

__ INIT __ PY:

from openerp.modules import get_module_resource, get_module_path
import mct_projects

mct_projects.py:

from openerp.osv import fields, osv

class mct_projects(osv.osv):

    _inherit = 'project.project'

    _columnns = {
        'mct_projects_machine': fields.integer('Mct projects Machine', size=11),
        }
    _defaults ={
    }

mct_projects()

mct_projects.xml:

<?xml version="1.0" encoding="UTF-8"?>
<openerp>
   <data>
      <record model="ir.ui.view" id="mct_projects_project">
         <field name="name">project.project.form</field>
         <field name="model">project.project</field>
         <field name="inherit_id" ref="project.edit_project" />
         <field name="arch" type="xml">
            <xpath expr="//field[@name='partner_id']" position="after">
               <field name="mct_projects_machine" />
            </xpath>
         </field>
      </record>
   </data>
</openerp>

__的OpenERP __。PY

{
    'name': "MCT project integration",
    'version': "1.0",
    'author': "XYZ",
    'category': "Tools",
    'depends': ['project'],
    'data': ['mct_projects.xml'],
    'demo': [],
    'installable': True,
}

就我的诊断而言,“拱”字段出了问题。似乎是说mct_projects_machine不是一个曾经创建过的字段,但是我在mct_projects.py中声明了它,所以我很茫然。我完全按照教程,通过更改xpath表达式修复了stackoverflow上的不同帖子,所以我尝试了。这是我的代码现在和教程之间的唯一区别 - 我得到了同样的错误。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

该错误是一个非常典型的“表单有一个尚未添加到模型中的字段”,乍一看是奇怪的,您的模型和模块看起来很好。

我要做的唯一评论是假设您是OpenERP 6.1或更高版本,您不需要在mct_projects.py结束时实例化您的模型,这样您就可以松开mct_projects()。

您还应该从 init .py文件中删除from openerp.modules ...行。

我最初的怀疑是该领域尚未进入该模型。看看ir_model_fields表或查看设置 - &gt;数据库。我还会检查你的插件路径以确保找到代码 - 一旦OpenERP启动就会记录插件路径。最后一个想法是,使用调试器运行并在列上设置断点,以查看代码是否正在被解析。

答案 1 :(得分:0)

我案中的解决方案:

  1. 重新启动OpenERP服务器。
  2. 安装或升级模块。
  3. 由于某些原因,如果没有重新启动,OpenERP不允许将新创建的字段添加到视图中,即使有问题的字段是在正在安装的模块中定义的。