【问题标题】:OpenERP 7 Adding Field to Existing Module - XML Validate ErrorOpenERP 7 将字段添加到现有模块 - XML 验证错误
【发布时间】:2014-05-28 18:46:53
【问题描述】:

我是编辑/编程 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 上的另一篇文章,所以我尝试了。这是我现在的代码与教程之间的唯一区别 - 无论哪种方式,我都会遇到相同的错误。任何帮助将不胜感激。

【问题讨论】:

  • r 使用 windows 或 ubuntu ?
  • 服务器实际上运行的是 Debian,所以非常接近 Ubuntu。
  • @user3684242 :我面临同样的问题。你能解决这个问题吗?

标签: python xml xpath openerp openerp-7


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我的解决方案:

    1. 重启 OpenERP 服务器。
    2. 安装或升级模块。

    由于某种原因,在没有重新启动的情况下,OpenERP 不允许将新创建的字段添加到视图中,即使有问题的字段是在正在安装的模块中定义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2023-03-15
      • 2014-11-21
      • 2018-03-09
      • 2013-07-18
      相关资源
      最近更新 更多