我是Odoo的新手,我开发了一个简单的模块,它将为现有视图添加一些字段。首先,我将它安装到Odoo,它工作正常。然后我编辑一些代码,喜欢在我的模块中添加新的更多字段。现在,当我使用一些新代码升级我的模块时,Odoo显示错误:KeyError" bla bla"。 但是,如果我将我的新模块安装到另一台机器上,它可以正常工作。 我错过了什么?我该如何解决呢? 抱歉,我的英语不好,我是越南人。
更新我的代码: my_model.py文件:
from openerp.osv import fields, osv
class ij_project_form(osv.osv):
_name = 'project.project'
_inherit = "project.project"
_columns = {
'ij_project_form_id': fields.integer('An integer field', size=11),
'ij_project_form_des': fields.text('A text field')
}
_defaults ={
'ij_project_form_id': 0
}
ij_project_form()
my_view.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="ij_project_form">
<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">
<newline/>
<field name="ij_project_form_id" />
</xpath>
<xpath expr='//page[@string="Project Stages"]' position="after">
<group string="Injection tab" name="sample">
<field name="ij_project_form_des" />
</group>
</xpath>
</field>
</record>
</data>
</openerp>
答案 0 :(得分:1)
这里你继承了project.project模型,这个模型在项目模块中,所以你首先在v7,v8 openerp .py中设置依赖关系,如果你在v9或v10上工作比清单 .py
<强>&#39;取决于&#39;:[&#39;项目&#39;] 强>
答案 1 :(得分:0)
1)在'odoo&#39; _name&#39;属性在后端(即数据库中)创建一个新表。因此,当您想要向现有模型添加字段时(例如此处&#39; project.project&#39;),无需使用_name。 &#34; _inherit&#34;像上面就足够了。
使用上面的代码,它将尝试创建另一个表project_project(它是odoo的基表,已经在数据库中创建)。所以,删除代码中的_name并运行。
我们可以将_name与_inherit一起使用,但尝试为&#39; _name&#39;添加不同的名称。属性。所以这场冲突不会提出来。
答案 2 :(得分:0)
您应该更新__openerp__.py
文件,并确保正确放置depends
部分。
在这里,您继承了project.project
模块,因此您应该在__openerp__.py
中添加它:
&#39;依赖&#39;:[&#39;项目&#39;]
答案 3 :(得分:0)
这可能是因为您继承了项目模块。因此,在模块的清单文件中,您必须依赖于项目模块 例如: 在 openerp .py文件中添加以下代码
'取决于':[ '项目', ],
干杯!
答案 4 :(得分:0)
对于odoo中的每个新手都会发生这种情况,我也遇到了这个“KeyError”。好吧,我通过创建新的数据库并再次安装所有需要的模块来更改数据库。它对我有用。
关于你的英语,In Communication的话并不重要,只需要理解。
答案 5 :(得分:0)
嗨,我也是陌生人 我遇到了相同的问题KeyError:“某些旧模型” 原因与其他答案一样,由于数据库中的数据过旧
我通过使用此命令从db中删除记录来解决了该问题
DELETE FROM ir_model WHERE model = 'yourmodule.oldmodelname';