我是编辑/编程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上的不同帖子,所以我尝试了。这是我的代码现在和教程之间的唯一区别 - 我得到了同样的错误。任何帮助将不胜感激。
答案 0 :(得分:2)
该错误是一个非常典型的“表单有一个尚未添加到模型中的字段”,乍一看是奇怪的,您的模型和模块看起来很好。
我要做的唯一评论是假设您是OpenERP 6.1或更高版本,您不需要在mct_projects.py结束时实例化您的模型,这样您就可以松开mct_projects()。
您还应该从 init .py文件中删除from openerp.modules ...行。
我最初的怀疑是该领域尚未进入该模型。看看ir_model_fields表或查看设置 - &gt;数据库。我还会检查你的插件路径以确保找到代码 - 一旦OpenERP启动就会记录插件路径。最后一个想法是,使用调试器运行并在列上设置断点,以查看代码是否正在被解析。
答案 1 :(得分:0)
我案中的解决方案:
由于某些原因,如果没有重新启动,OpenERP不允许将新创建的字段添加到视图中,即使有问题的字段是在正在安装的模块中定义的。